24小时热门版块排行榜    

查看: 636  |  回复: 2

coinqin

新虫 (初入文坛)

[求助] 如何用matlab画出以坐标轴X,Y为参数的I(X,Y)的图像,即光强和相位图

MATLAB新手因为要画光强和相位图,U(X,Y)是光场复振幅,是一个e的含虚部的次方的公式的叠加,下面程序中有。
光强I=|U(X,Y)|^2,相位phi=arctan(ImU(X,Y)/ReU(X,Y))

贴上自己编的代码,如果有基础性的错误希望大家指出,谢谢
最后 代码画不出来正确图形,不知道是用哪个函数画图,也不知道是不是MATLAB不能够处理这样一个e的含虚部的次方的公式的叠加
诚心谢谢大神帮忙改错!!!

clc;
n=input('Enter the n value:');
m=input('Enter the m value:');
lambda=6.325*10^(-7);
z=0.1;
d=10^(-3);
p=d;
q=0;
alpha=0;
U=exp(-2i*pi*(X*p+Y*q)/lambda/z)*exp(1i*m*alpha);
for t=1:n-1
    alpha=2*t*pi/n;
    d=sqrt(d^2+2*m*lambda*z/n);
    X=d*cos(t*alpha);
    Y=d*sin(t*alpha);
    U=exp(-2i*pi*(X*p+Y*q)/lambda/z)*exp(1i*m*alpha);
    %I=U*conj(U);
    I=abs(U).^2;             %两种方法都可以求出光强
    phi=atan(U);              %相位
    plot(phi,[-7*10^(-5),7*10^(-5),-7*10^(-5),7*10^(-5)]);              该方法可以直接画出以X,Y为坐标的相位图吗?还是用surf方法,但是提示I必须为矩阵,不知道怎么设置成矩阵。
   % surf(X,Y,I);   
   %plot(X,Y,I);
   % mesh(x,y,I);
    axis auto
   
end
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

coinqin

新虫 (初入文坛)

X=d*cos(t*alpha);
    Y=d*sin(t*alpha);写错了
应该为p=d*cos(t*alpha);
    q=d*sin(t*alpha);
2楼2016-03-02 20:11:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

coinqin

新虫 (初入文坛)

有人可以解答吗,拜托了
3楼2016-03-03 20:12:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 coinqin 的主题更新
信息提示
请填处理意见