matlab程序,报错说z必须为矩阵,不能是向量或者标量。程序如下?

clear;clc;[x,t]=meshgrid(-5:0.1:5,-5:0.1:5);v1=sqrt(3);u1=1;u2=2;v2=sqrt(2);a1=u1+1i*... clear;
clc;

[x,t] = meshgrid(-5:0.1:5,-5:0.1:5);
v1=sqrt(3);
u1=1;
u2=2;
v2=sqrt(2);
a1=u1+1i*v1;
A1=u1-1i*v1;
a2=u2+1i*v2;
A2=u2-1i*v2;
grid off

b=x+2*a1*t;
B=x+2*A1*t;
c=x+2*a2*t;
C=x*2*A2*t;
d1=-1i*a1*b;
d2=1i*a1*b;
d3=-1i*A1*B;
d4=1i*A1*B;
d5=-1i*a2*c;
d6=1i*a2*c;
d7=-1i*A2*C;
d8=1i*A2*C;
a11=exp(d1);
a12=exp(d2);
a13=a1*a11;
a14=a1*a1*a11;
a15=a1*a12;
a21=-1*exp(d3);
a22=exp(d4);
a23=A1*a21;
a24=A1*A1*a21;
a25=A1*a22;
a31=exp(d5);
a32=exp(d6);
a33=a2*a31;
a34=a2*a2*a31;
a35=a2*a32;
a41=-1*exp(d7);
a42=exp(d8);
a43=A2*a41;
a44=A2*A2*a41;
a45=A2*a42;
M=[a11 a12 a13 a14;a21 a22 a23 a24;a31 a32 a33 a34;a41 a42 a43 a44];
N=[a11 a12 a13 a15;a21 a22 a23 a25;a31 a32 a33 a35;a41 a42 a43 a45];
D=det(M);
F=det(N);
q1=-2i*(D/F);
z=abs(q1);
figure
h=mesh(x,t,z);
axis([-5,5,-5,0,0,5])
view(15,20)
展开
 我来答
小菜鸟2无聊写代码
2021-06-16 · TA获得超过1058个赞
知道小有建树答主
回答量:932
采纳率:87%
帮助的人:165万
展开全部

因为这个matlab程序调用了mesh函数,它需要3个参数都是size一样的矩阵,哪怕矩阵里的内容都是常数,因为前两个参数提供了一个面的东西方向坐标和南北坐标,还差第三个坐标提供垂直方向坐标。

官方的帮助

这个代码是写电工学的还是复变函数的,这个代码风格我觉得十分……眼熟...故我修改查找错误,首先

出错在49-52

错误在代码的第49-52行det函数求的是矩阵的行列式值,结果是个1x1的常数,而非矩阵;而abs是求复数a+bi的模a²+b²的,以及实数的绝对值;故D,F,q1都不是矩阵,因而后面的mesh函数自然也是要跑不了的。

如果只是要修改以运行,可以这么改,即在把mesh语句改成h=mesh(x,t,z+zeros(size(x)))即可(但是这个图肯定不符合要求,具体怎么改还要等我恶补一下电工学)

更多追问追答
追问



我要求的是N=2的情况下q[N]的图像,(其中q=0)如果det得出的必定为值的话,那岂不是没法画出图了,我修改了一下程序,这样看起来应该简洁一些。

追答
ok有图了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式