空对称数组和双数组在Matlab中不一样

az31mfrm  于 6个月前  发布在  Matlab
关注(0)|答案(1)|浏览(78)

我用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

kdfy810k

kdfy810k1#

a1 =[];

字符串

  • 是一个空的double数组 *
Ta*Tw*eqh(i)+a*Te^2*en(i)+a*Te^2*ey(i)*Kp;

  • 是sym变量,不能直接赋值给double数组 *
    备选方案
a1 = sym([]);

  • 是一个空的sym数组 *

相关问题