肉肉坨 发表于 2008-1-17 14:33

fsolve函数中@引入带来的问题

在MATLAB6.5运行一个程序的时候出现以下错误提示:
在7.0中又可以运行出来,
y=insulator_3C(0,1)
??? Error: File: D:\matlab6.5\work\lyy\insulator_3C.m Line: 37 Column: 37
"identifier" expected, "(" found.

D:\matlab6.5\work\lyy\insulator_3C.m Line: 37 Column: 37
的语句是

=fsolve(@(x0_1) insulator_EL(x0_1,a_0,L_nm1,...
   M_y1,E_b,p_0,N,E_a),pstart1,options)
exitflag1

insulator_EL是函数名,x0_1是变量,a_0,L_nm1,M_y1,E_b,p_0,N,E_a都是代入的常数,pstart1是初始值,
option设的为options = optimset('Display','iter','Jacobian','off');

到底是哪里出错了呢?

花如月 发表于 2008-1-17 14:35

括弧不对称?

肉肉坨 发表于 2008-1-17 14:41

=fsolve(@(x0_1) insulator_EL(x0_1,a_0,L_nm1,...
   M_y1,E_b,p_0,N,E_a),pstart1,options)
是对称的啊。

是不是跟@的引入有关呢?
高手能不能介绍下函数调用时@的用法,搜索论坛好像这方面的介绍比较少。

肉肉坨 发表于 2008-1-17 22:20

在论坛中再搜索关键字fsolve,找到了答案,再好好研究研究。
http://www.simwe.com/forum/thread-536433-1-1.html

eight 发表于 2008-1-21 20:43

6.5对 @ 不太支持

肉肉坨 发表于 2008-1-22 17:08

6.5中改为
=fsolve(@insulator_EL,pstart1,options,a_0,L_nm1,M_y1,E_b,p_0,N,E_a);

或者
=fsolve('insulator_EL',pstart1,options,a_0,L_nm1,M_y1,E_b,p_0,N,E_a);


都是可以的。
页: [1]
查看完整版本: fsolve函数中@引入带来的问题