matlab大神指导一下,显示错误z不是标量,而是一个矩阵,不知道怎么办

holdonclear;%N=500;N=input('Numberofsamples(enterfrom100to500)=');L=10*10^-3;%Ld=0.63... hold on
clear;
%N=500;
N=input('Number of samples(enter from 100 to 500)=');
L=10*10^-3;
%Ld=0.6328;
Ld=input('请输入波长[毫米]=');
Ld=Ld*10^-6;
ko=(2*pi)/Ld;
%wo=1;
wo=input('请输入束腰[毫米]=');
wo=wo*10^-3;
z_ray=(ko*wo^2)/2*10^3;
z_ray=z_ray*10^-3;
%z=[50 50 50;50 50 50;50 50 50];
z=input('请输入传输距离z[米]=');
dx=L/N;
for n=1:N+1
for m=1;N+1;
x(m)=(m-1)*dx-L/2;
y(n)=(n-1)*dx-L/2;
Gau(n,m)=exp(-(x(m)^2+y(n)^2)/(wo^2));
Kx(m)=(2*pi*(m-1))/(N*dx)-((2*pi*(N))/(N*dx))/2;
Ky(n)=(2*pi*(n-1))/(N*dx)-((2*pi*(N))/(N*dx))/2;
H(n,m)=exp(j/(2*ko)*z*(Kx(m)^2+Ky(n)^2));
end
end
FGau=fft2(Gau);
FGau=fftshift(FGau);
FGau_pro=FGau.*H;
Gau_pro=ifft2(FGau_pro);
x=x*10^-3;
y=y*10^-3;
figure(1);
mesh(x,y,abs(Gau))
title('高斯光强分布')
xlabel('x[毫米]')
ylabel('y[毫米]')
axis([mix(x) max(x) mix(y) max(y) 0 1])
axis square
figure(2);
mesh(x,y,(Gau_pro))
title(['传播',num2str(z),'米后的高斯光束'])
xlabel('x[毫米]')
ylabel('y[毫米]')
axis([mix(x) max(x) mix(y) max(y) 0 1])
axis square
展开
 我来答
雪V歌
2018-01-10 · 知道合伙人数码行家
雪V歌
知道合伙人数码行家
采纳数:78698 获赞数:222938
泉州兴瑞发公司2015-2017最佳优秀员工。

向TA提问 私信TA
展开全部
mesh(wi,de,te)这个函数里的wi,de,te必须为矩阵,而你的wi,de,te在此算出为行向量,所以报错,即要使用mesh函数,则必须函数里面的参数必须为矩阵。所以你得把wi,de,te改为矩阵形式,或者你可以试一下plot3

plot3函数用于绘制三维曲线图。它的指令与plot相似,都是Matlab的内部函数。
plot3(X,Y,Z);
plot3(X,Y,Z,'string'); string用来控制曲线的颜色。
对于多条曲线,可以绘制在同一个plot3中。
plot3(X1,Y1,Z1,'string1',X2,Y2,Z2,'string2');
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式