matlab优化的参数传递
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 初学者最爱用但是最不提倡的方法:全局变量法
适用于MA TLAB7以及以前或者以后的版本
function withaddtionpara1
global b c
b = 2;
c = 3.5; x0 =0;
options = optimset('Display', 'off'); % Turn off Display
y = fsolve(@poly, x0, options)
function y = poly(x) % Compute the polynomial.
global b c
y = x^3 + b*x + c;
2. 直接传递法
适用于MA TLAB7以及以前或者以后的版本
根据:
X=FSOLVE(FUN,X0,OPTIONS,P1,P2,...) passes the problem-dependent parameters P1,P2,... directly to the function FUN: FUN(X,P1,P2,...). Pass an empty matrix for OPTIONS to use the default values.
如果options不需要设置,则用空矩阵('[]')占位
function withaddtionpara2
b = 2;
c = 3.5; x0 =0;
options = optimset('Display', 'off'); % Turn off Display
y = fsolve(@poly, x0, options,b,c)
function y = poly(x,b,c) % Compute the polynomial.
y = x^3 + b*x + c;
3. 采用evalin以及assignin函数法
适用于MA TLAB7以及以前或者以后的版本
function withaddtionpara3
b = 2;
c = 3.5; x0 =0;
assignin('base','b',b);
assignin('base','c',c);
options = optimset('Display', 'off'); % Turn off Display y = fsolve(@poly, x0, options)
function y = poly(x) % Compute the polynomial.
b = evalin('base','b');
c = evalin('base','c');
y = x^3 + b*x + c;
4. 匿名函数法(Anonymous function)
适用于MA TLAB7以及以后的版本
function withaddtionparas4
options = optimset('Display', 'off'); % Turn off Display b =2; c = 3.5; x0 =0;
y = fsolve(@(x)mypoly(x,b,c), x0, options)
function y = mypoly(x,b,c)
y = x^3 + b*x + c;
5. 嵌套函数法(nested function)
适用于MA TLAB7以及以后的版本
function withaddtionpara5
b =2;
c = 3.5; x0 =0;
options = optimset('Display', 'off'); % Turn off Display y = fsolve(@poly, x0, options)
function y = poly(x) % Compute the polynomial.
y = x^3 + b*x + c;
end
end
6. 采用文件传递(有些太笨拙了的办法)
适用于MA TLAB7以及以前或者以后的版本
function withaddtionpara6
b = 2;
c = 3.5; x0 =0;
save paras b c
options = optimset('Display', 'off'); % Turn off Display y = fsolve(@poly, x0, options)
function y = poly(x) % Compute the polynomial. load paras.mat
y = x^3 + b*x + c;