matlab代码出错 说Z必须是矩阵 不能是矢量??代码见下

clear;clc;
xx=[];
yy=[];
zz=[];
%有数值的变量
syms Ceq Req
t=1;
Eeq=1485;
Leq=30*(10^(-6));
Irmz=1596;
Tao=41*(10^(-6));

%含有未知量的变量
We=sqrt(Leq*Ceq');
W=We.^(-1);
P=Req/(2*Leq);
B=sqrt(W.^2 - P.^2);
g=(Tao*(Tao-(2*P./W.^2))*Irmz)./(Tao*(Tao-(2*P./W.^2))+(1./W.^2));
A1=Irmz-g;
A2=-(P*(Irmz-g)+Eeq/Leq+g/Tao)/B;
K=P/W;

for Ceq = 0:0.01*10^(-5):5*10^(-5)
for Req = 0:0.01:5
[Ceq,Req]=meshgrid(Ceq,Req);
%因变量
Vd=Eeq+Leq*((P*A1-B*A2)*cos(B*t))+(B*A1+P*A2)*sin(B*t)*exp(-P*t)+(Leq*g*exp(-t/Tao)/Tao);
xx=[xx,Ceq];
yy=[yy,Req];
zz=[zz,Vd];
end
end

surf(xx,yy,zz);
xlabel('Ceq')
ylabel('Req')
zlabel('Vd')

第1个回答  2020-08-27

matlab代码出错 说Z必须是矩阵 不能是矢量?其原因是

Vd是sym型数据,而不是数值型数据。所以题主用双循环语句来求Vd的思路是对的,但处理的方法欠妥,应该这样来写

1、Ceq,Req单独取值,即

Ceq = 0:0.01*10^(-5):5*10^(-5)

Req = 0:0.01:5

2、使用meshgrid函数,进行数据网格化,即

[Ceq0,Req0]=meshgrid(Ceq,Req);

3、使用for双循环语句,求解Vd值,并赋值给zz数组变量。

4、按上述要求修改,运行可以得到如下图形结果。

相似回答
大家正在搜