【发布时间】:2015-05-07 08:59:16
【问题描述】:
我遇到了fmincon 问题,因为我不知道如何在 Matlab 6.5 中声明我的目标函数。我试图将我的目标函数声明为一个单独的 m.file,名为 parameterfun
function y=parameterfun(X,A,b)
y=sum((A*X(:)-b).^2);
然后我尝试在以下例程中调用该函数
L=50e3;
n=5;
zi=linspace(0,L,n);
alpha=zi./L;
A=[alpha.^(5/3); alpha.^(5/6).*(1-alpha).^(5/6)]
lambda=1e-6;
k=2*pi/lambda;
Cn2=1e-16;
r0sw=(0.423*k^2*Cn2*3/8*L)^(-3/5);
rytov=0.1241*Cn2*k^(7/6)*L^(11/6);
b=[r0sw; rytov];
x0=(n/3*r0sw*ones(n,1)).^(-5/3); %%starting guess
fun=@parameterfun(X,A,b);
lb=zeros(n,1);
ub=0.1/1.33*(k*L)^(5/6)./A(2,:);
ub(A(2,:)==0)=50^(-5/3);
X = fmincon(fun,x0,[],[],[],[],lb,ub)
我真的不知道如何声明和调用我的目标函数。任何帮助将不胜感激。
【问题讨论】:
-
您遇到的错误究竟是什么?您需要发布此内容以获得更好的答案。
-
我收到消息:???错误:文件:C:\MATLAB6p5\work\carolingio.m 行:24 列:18 缺少运算符、逗号或分号。