找回密码
 注册
Simdroid-非首页
查看: 106|回复: 8

关于fminbnd的不解

[复制链接]
发表于 2010-7-19 23:10:54 | 显示全部楼层 |阅读模式 来自 浙江台州
本帖最后由 messenger 于 2010-7-20 12:53 编辑

Q1=A(:,:,1)*(( transpose(A(:,:,1))*A(:,:,1))\(transpose(A(:,:,1))*Q(:,:,1)))
Q_2=(Q(:,:,1)-Q1).*(Q(:,:,1)-Q1);
f=@(tc1)sum(Q_2);
[tc1,f]=fminbnd(f,90,10800)
想通过以上程序求得变量tc1在区间(90,10800)内sum(Q_2)的最小值,可是出现以下问题,

??? Function 'le' is not defined for values of class 'sym'.
Error in ==> le at 18
  [varargout{1:nargout}] = builtin('le', varargin{:});
Error in ==> fminbnd at 277
    if fu <= fx
但是如果先计算出sum(Q_2)然后粘贴至f方程中又可以完成求值过程,请问是否因为存在变量的原因呢?如果想一气呵成应该怎样做呢?

请大家帮帮我(Q_2是含有tc1字符变量的变量)
发表于 2010-7-20 09:46:21 | 显示全部楼层 来自 美国
Simdroid开发平台
“le”是什么?是已经赋值的一个数值变量么?
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-20 10:23:55 | 显示全部楼层 来自 浙江台州
le 好象是小于等于的逻辑符号,我在想怎么样才能将符号变量Q_S转化成fminbnd所需要的函数fun呢,谁来帮帮我,急啊
回复 不支持

使用道具 举报

发表于 2010-7-20 10:36:44 | 显示全部楼层 来自 四川成都
在Matlab中,函数(不管你是M函数或者inline函数,或者你这里的anonymous function)指的是能够创建局部独立空间的程序语句或者文件,在函数中定义的所有变量名对函数而言均是局部的,既不会影响其它程序、函数以及命令窗口工作空间的任何变量也不受其影响。你可以用下面语句做个试验:
a=8;
f=@(a)a^2+2*a+1;
f(2)
f(a)
看到了吧,在f定义之前的量对f没有任何影响影响。所以你在f=@(tc1)sum(Q_2);中定义的tc1并非就是你Q_2中的tc1,其具体区别在哪,你可以看看rocwoods大侠在本版中推销的那本书(:lol)。
想要一次性解决问题的话,建议你用M函数来构建,不用匿名函数,那玩意有点绕~~

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-20 10:51:30 | 显示全部楼层 来自 浙江台州
谢谢,我试试看
回复 不支持

使用道具 举报

发表于 2010-7-20 11:04:48 | 显示全部楼层 来自 湖南湘潭
本帖最后由 lin2009 于 2010-7-20 11:09 编辑

1# cnzjtzszf

描述问题要完整。
你的程序中的A=?
没看到在Q_2表达式中没看到tc1的影子。

le是Matlab内置函数
<=   Less than or equal.


Q1=A(:,:,1)*(( transpose(A(:,:,1))*A(:,:,1))\(transpose(A(:,:,1))*Q(:,:,1)))
Q_2=(Q(:,:,1)-Q1).*(Q(:,:,1)-Q1);
f=@(tc1)sum(Q_2);
[tc1,f]=fminbnd(f,90,10800)

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-20 11:25:45 | 显示全部楼层 来自 浙江台州
按五楼的意思是变量传递出现的问题,不知道能否设置全局变量来解决问题呢
回复 不支持

使用道具 举报

发表于 2010-7-20 14:23:59 | 显示全部楼层 来自 四川成都
我在前面所说的只是一个思路,你要是想用全局变量来解决这一问题的话,建议你按6#的意思先把代码给全再说哈~~

7# cnzjtzszf
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-20 15:00:29 | 显示全部楼层 来自 浙江台州
sorry,本人是初学者.
A(:,:,1)是一个含有字符参数tc1的4×9矩阵如下:
A(:,:,1)=[3 6 8 tc1 5 7 6 4 2;
             6 4 5 1 3 8 2 4 tc1;
             6 4 8 3 0 tc1 8 3 5;
             5 8 7 2 6 tc1 6 3 4;]
Q(:,:,1)=[5;7;3;4]
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 21:35 , Processed in 0.056036 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表