xudongjingh 发表于 2014-5-15 22:21:58

matlab转向机构优化程序问题

程序如下:
function f=fun(x)
global K L thetamax alpha
K=1480;
L=2960;
thetamax=45;
x0(1)=input( '输入初始点的第1个分量(臂长、mm)'); %输入180
x0(2)=input('输入初始点的第2个分量(底角、度)'); %输入75
alpha=linspace(0,thetamax,61); %将转角划分为60等分间隔
thetamax=thetamax*pi/180; %转换为弧度单
x0(2)=x0(2)*pi/180;
lb(1)=0.11*K;lb(2)=acot(K/(1.2*L));
ub(1)=0.17*K;
ub(2)=pi/2;
lb=; %定义上、下边界约束条件和允差
ub=;
x0=;
for i=1:61
f=0; %函数值初始化
betae(i)=atan(tan(alpha(i))/(1-(K/L)*tan(alpha(i)))); %计算转角期望值
A(i)=2*x(1).^2*sin(x(2)+alpha(i)); %计算实际转角
B(i)=2*K*x(1)-2*x(1).^2*cos(x(2)+alpha(i));
C(i)=2*x(1).^2-4*x(1).^2*(cos(x(2)).^2+4*K*x(1)*cos(x(2))-2*K*x(1)*cos(x(2)+alpha(i)));
theta3(i)=2*acot((A(i)+sqrt(A(i).^2+B(i).^2-C(i).^2))/B(i)+C(i));
beta(i)=x(2)+theta3(i)-pi;
if alpha(i)<=pi/18 %计算目标函数值
f(i)=1.5*abs(beta(i)-betae(i));
elseif alpha(i)<=pi/180;f(i)=abs(beta(i)-betae(i));
else f(i)=0.5*abs(beta(i)-betae(i));
end
end
options=optimset('TolFun',1e-10 ,'TolCon',1e-6);
=lsqnonlin('fun',x0,lb,ub,options); %调用lsqnonlin函数求解。
出现错误: Input argument "x" is undefined.

Error in ==> fun at 20
A(i)=2*x(1).^2*sin(x(2)+alpha(i)); %计算实际转角
是什么原因,麻烦高手看一下

页: [1]
查看完整版本: matlab转向机构优化程序问题