代码见下,为什么说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')

神不在的星期二
浏览 62回答 1
1回答

拉莫斯之舞

matlab代码出错 说Z必须是矩阵 不能是矢量?其原因是Vd是sym型数据,而不是数值型数据。所以题主用双循环语句来求Vd的思路是对的,但处理的方法欠妥,应该这样来写1、Ceq,Req单独取值,即Ceq = 0:0.01*10^(-5):5*10^(-5)Req = 0:0.01:52、使用meshgrid函数,进行数据网格化,即[Ceq0,Req0]=meshgrid(Ceq,Req);3、使用for双循环语句,求解Vd值,并赋值给zz数组变量。4、按上述要求修改,运行可以得到如下图形结果。 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Node.js