下面这个代码总报错Undefined function or variable,如果我char(Mdd1)则会报没有定义lamada的错,怎么解决
syms lamada;
XY1=[Kx(1);Ky(1)];
Mid1=XY1+lamada*dk1;
disp(Mid1);
Mdd1=0;
for i=[1:length(Kx_1)];
m1=(compare_angle1(Kx_1(1,i),Ky_1(1,i))-atan((Mid1(2,1)-Ay(Kx_1(1,i),Ky_1(1,i)))/(Mid1(1,1)-Ax(Kx_1(1,i),Ky_1(1,i)))))^2;
Mdd1=Mdd1+m1;
end
disp(Mdd1);
%Mdd1=char(Mdd1);
lamada=fminsearch(Mdd1,1);
1、首先打开电脑上的“matlab”软件,软件主界面如图所示,在命令行窗口输入“function”。
2、将鼠标移动function处,点击鼠标右键,可以看到“关于所选内容的帮助”。
3、接着点击箭头处按钮,即可查看function的具体使用方法,方框处为function的使用格式。
4、点击左上方箭头处的“新建”按钮,新建一个函数脚本文件,点击方框处“脚本”即可。
5、左边方框处的output为函数文件的输出参数,右边方框的input为函数文件的输入参数,f为函数名称,中间输入函数的具体内容,结尾需要加上end。
6、接着在命令行输入[y,a,b]=f(5,2),输入参数为具体的数值,点击“enter”键即可运行程序。
那些不重要啊。那些都是可以拿到值的。。。
追答问题在于,你说的报错信息就是“Undefined function or variable”,但又没说是哪个变量未定义。上面任何一个变量没赋值都会导致“Undefined function or variable”错误,怎么会不重要?
追问我贴错错误原因了,不是未定义,而是这个句柄错误If FUN is a MATLAB object, it must have an feval method.
如果我把Mdd1=char(Mdd1),会提示lamada未定义。。。。
晕,到底是什么错误你不说清楚。
而且直到现在你还是没说清楚:在什么条件下,出现什么样的问题。
比如你说的“句柄错误”,是哪一句提示那样的信息?
再比如“Mdd1=char(Mdd1),会提示lamada未定义”,我如果把上面列出来的那一堆变量都给赋值,比如说都等于1,则char(Mdd1)会得到(1-1/4*pi)^2,根本不会出现你说的错误。
你想让别人帮助你,至少请把问题说清楚吧,连你遇到的问题都无法复现,怎么帮?
lamada=fminsearch(Mdd1,1);这一行出现
If FUN is a MATLAB object, it must have an feval method.错误,也就是说Mdd1的形式不对,如果要使用fminsearch(),必须Mdd1=' '的形式,所以我才使用char(),可是如果这样改,结果就会提示我未定义lamada变量,但是我disp(Mdd1)里面,是确实有lamada变量的。描述的够清楚了么?
如果方便可不可以加Q405207993?
现在勉强算是知道问题是什么了。
请你回头自己看一下,你之前的描述所提供的信息谁能看明白?
按照你现在的代码,计算得到的Mdd1是一个符号(sym)对象,你直接拿它去调用fminsearch当然是不行的,原因也很清楚,因为一个符号对象是不可能被feval的。
至于先执行Mdd1=char(Mdd1)然后再调fminsearch,那也是不行的(而且你之前的说法让人以为执行char(Mdd1)出错,而实际上是继续向下执行fminsearch的时候出错)。
把最后一句改成
lamada=fminsearch(inline(char(Mdd1)),1)