我叫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的函数。现在,我准备好绘制图表了,我得到了
但它的颜色应该比图像显示的颜色多。我所做的只是模拟。实验中没有数据。但它没有显示实验显示的内容。非常感谢任何帮助。非常感谢你提前。