我使用matlab R2018b 这些代码是正确的:
a=0.336;
Ta=9.476;
Te=1.208;
Tw=1.498;
eqh=[0.661;0.619;0.568];
ex=[-1.24;-1.346;-1.441];
en=-ex;
ey=[0.376;0.705;0.968];
eqx=[-0.309;-0.357;-0.392];
eh=[1.594;1.583;1.545];
eyqh=[0.642;0.78;0.897];
a0=a*Ta*Te^2;
syms bt Td Ki Kp;
a1=[];a2=[];a3=[];a4=[];exqh=[];
for i=1:3
Kp=1/bt;
exqh(i)=en(i)*eqh(i)+eqx(i)*eh(i);
Ki=1/(bt*Td);
a1=Ta*Tw*eqh(i)+a*Te^2*en(i)+a*Te^2*ey(i)*Kp
a1(i)=a1
end
但是这些代码是错误的:
a=0.336;
Ta=9.476;
Te=1.208;
Tw=1.498;
eqh=[0.661;0.619;0.568];
ex=[-1.24;-1.346;-1.441];
en=-ex;
ey=[0.376;0.705;0.968];
eqx=[-0.309;-0.357;-0.392];
eh=[1.594;1.583;1.545];
eyqh=[0.642;0.78;0.897];
a0=a*Ta*Te^2;
syms bt Td Ki Kp;
a1=[];a2=[];a3=[];a4=[];exqh=[];
for i=1:3
Kp=1/bt;
exqh(i)=en(i)*eqh(i)+eqx(i)*eh(i);
Ki=1/(bt*Td);
a1(i)=Ta*Tw*eqh(i)+a*Te^2*en(i)+a*Te^2*ey(i)*Kp
end
它们之间的区别是:
a1=Ta*Tw*eqh(i)+a*Te^2*en(i)+a*Te^2*ey(i)*Kp
a1(i)=a1
和
a1(i)=Ta*Tw*eqh(i)+a*Te^2*en(i)+a*Te^2*ey(i)*Kp
我不知道为什么第二个错误。
The following error occurred converting from sym to double:
Unable to convert expression into double array.
Error in Now3 (line 20)
a1(i)=Ta*Tw*eqh(i)+a*Te^2*en(i)+a*Te^2*ey(i)*Kp
答案 0 :(得分:1)
a1 =[];
是一个空的双精度数组
同时
Ta*Tw*eqh(i)+a*Te^2*en(i)+a*Te^2*ey(i)*Kp;
是一个符号变量,不能直接分配给双精度数组
替代
a1 = sym([]);
是一个空的符号数组