使用pcolor在matlab中绘制电场

时间:2015-12-11 18:20:19

标签: matlab plot matlab-figure

我叫Alex,我是Matlab编程的新手。我正在编写一个代码来绘制x-y轴上的电场轮廓。我正在使用pcolor(x,y,real(E))来做到这一点。然后,我使用阴影interp在平面x-y上显示我的电场的不同颜色。 首先,我有一个向量,其中一些值R表示圆的半径。然后,我将矢量r(柱面坐标)转换为x和y矢量(笛卡尔坐标),代码为

这是我用来创建图片的代码

r=(125/2)*1e-6;
a0=(105/2)*1e-6;
a=(81/2)*1e-9;
z=2*1e-3; 
theta=(pi*19)/180;
lambda=632*1e-9; 

n1=1.445;
n2=1.433;
delta = sqrt(n1^2 - n2^2);
Kco=n1*2*pi/lambda;
V=(2*pi*delta*a0)/lambda;

z=linspace(0,z,500);
g=zeros(1,length(z));

r=linspace(r,a,length(z));


B = zeros(1,length(r));

psi = zeros(length(r),length(r));
E = zeros(1,length(r));
M=length(z)

g = (a0)./(a+z*theta);

R=(g')*r;

beta = linspace(0,2*pi,length(z));
for i=1:length(z)
    w = R(i);
    w = repmat(w,[length(z) 1]);
    [X Y] = pol2cart(beta,w');
    x(i,:) = X;
    y(i,:)=Y;

    clear w;
    clear X Y;


end

for i=1:length(r)

    if r(i)<=a0
        n1=1.445;
        n2=1;
   delta = sqrt(n1^2 - n2^2);
    end
     R02(i)=(a0^2)./(((delta*2*pi*(a+z(i)*theta)/lambda)-1));

     psi(i,:)=exp(-(x(i,:).^2+y(i,:).^2)./(2*R02(i))) ;
end
clear R02




B=sqrt(Kco^2 -((2*V).*g)./(a0^2)+(g.^2)./(a0^2));
for i=1:length(r)
E(i,:) = sqrt(x(i,:).^2+y(i,:).^2).*psi(i,:).*(exp(-1i*(B(i)).*z(i)));
end


pcolor(x,y,real(E));

shading interp

这部分的z是z轴,这个矢量也有一些值。 因此,对于笛卡尔坐标,电场是x,y和z的函数。现在,我准备好绘制图表了,我得到了 enter image description here

但它的颜色应该比图像显示的颜色多。我所做的只是模拟。实验中没有数据。但它没有显示实验显示的内容。非常感谢任何帮助。非常感谢你提前。

0 个答案:

没有答案