How to plot poynting vector profile by using electric and magnetic filed components ?
7 次查看(过去 30 天)
显示 更早的评论
HERE I AM ADDING CODE
here I have to plot Quiver plot for poynting vector components Sy,Sz;
how to get position matrices y, z of this components Sy,Sz
clear all;
clc;
close all;
dim=32;
[kx,ky]=meshgrid(-1:2/(dim-1):1);
circ=sqrt(kx.^2+ky.^2)<1;
alp=asin(0.8);
k0=1/sin(alp);
k=128;
kz=sqrt(k0^2-(kx.^2+ky.^2));
Gx=sqrt(k0./kz).*((k0*ky.^2+kz.*kx.^2)./(k0*(kx.^2+ky.^2)));
Gy=sqrt(k0./kz).*((kz-k0).*kx.*ky)./(k0*(kx.^2+ky.^2));
Gz=sqrt(k0./kz).*(kx./k0);
sx=kx/k0;
sy=ky/k0;
sz=kz/k0;
ph=(atan2(kx,ky)+pi);
ph2=3*(atan2(kx,ky)+pi);
abr=exp(1i*ph2);
ph=rot90(ph,3);
la=-sin(ph);
lb=rot90(cos(ph),3);
lamda=531e-9;
z=-64:1:63;
c = numel(z);
Fx=(sy.*Gz-sz.*Gy);
Fy=(sz.*Gx-sx.*Gz);
Fz=(sx.*Gy-sy.*Gx);
mz=pi/((2*tan(alp/2)));
n = size(kx);
Ex = zeros([k k c]);
Ey = zeros([k k c]);
Ez = zeros([k k c]);
for jj=1:c
Exx(:,:,jj)=fftshift(fft2(exp(1i*kz*mz*z(jj)).*(Gx.*la.*circ.*abr),k,k));
Exy(:,:,jj)=fftshift(fft2(rot90(exp(1i*kz*mz*z(jj)).*Gy.*lb.*circ,3).*abr,k,k));
Ex=Exx-Exy;
Eyx(:,:,jj)=fftshift(fft2(exp(1i*kz*mz*z(jj)).*(Gy.*la.*circ.*abr),k,k));
Eyy(:,:,jj)=fftshift(fft2(rot90(exp(1i*kz*mz*z(jj)).*Gx.*lb.*circ,3).*abr,k,k));
Ey=Eyx+Eyy;
Ezx(:,:,jj)=fftshift(fft2(exp(1i*kz*mz*z(jj)).*(Gz.*la.*circ.*abr),k,k));
Ezy(:,:,jj)=fftshift(fft2(rot90(exp(1i*kz*mz*z(jj)).*Gz.*lb.*circ,3).*abr,k,k));
Ez=Ezx+Ezy;
Bxx(:,:,jj)=fftshift(fft2(exp(1i*kz*mz*z(jj)).*(Fx.*la.*circ.*abr),k,k));
Bxy(:,:,jj)=fftshift(fft2(rot90(exp(1i*kz*mz*z(jj)).*Fy.*lb.*circ,3).*abr,k,k));
Bx=Bxx+Bxy;
Byx(:,:,jj)=fftshift(fft2(exp(1i*kz*mz*z(jj)).*(Fy.*la.*circ.*abr),k,k));
Byy(:,:,jj)=fftshift(fft2(rot90(exp(1i*kz*mz*z(jj)).*Fx.*lb.*circ,3).*abr,k,k));
By=Byx+Byy;
Bzx(:,:,jj)=fftshift(fft2(exp(1i*kz*mz*z(jj)).*(Fz.*la.*circ.*abr),k,k));
Bzy(:,:,jj)=fftshift(fft2(rot90(exp(1i*kz*mz*z(jj)).*Fz.*lb.*circ,3).*abr,k,k));
Bz=Bzx+Bzy;
end
Ex=Ex(k/2,:,:);
Ey=Ey(k/2,:,:);
Ez=Ez(k/2,:,:);
Ex=squeeze(Ex);
Ey=squeeze(Ey);
Ez=squeeze(Ez);
Bx=Bx(k/2,:,:);
By=By(k/2,:,:);
Bz=Bz(k/2,:,:);
Bx=squeeze(Bx);
By=squeeze(By);
Bz=squeeze(Bz);
Sx=(Ey.*Bz-Ez.*By);
Sy=(Ez.*Bx-Ex.*Bz);
Sz=(Ex.*By-Ey.*Bx);
I=Ex.*conj(Ex)+Ey.*conj(Ey)+Ez.*conj(Ez);
figure(1)
imagesc(I),colormap gray
figure(2)
Quiver(y,z,abs(Sy),abs(Sz),0.5), how to get y,z from Sy,Sz
Hi,
here I calculated Poynting vector by using electric and magnetic field
components, I facing problem to plot poynting vector by using Quiver plot,
to plot Quiver plot in YZ plane I have Y and Z components of poynting vector,but
to plot Quiver plot I required position of this components,
Here poynting vector components have 128*128 pixel dimensions,
I required position vector y,z
HERE I AM ADDING CODE
here I have to plot Quiver plot for poynting vector components Sy,Sz; how to get position matrices y, z of this components Sy,Sz
How can I get this position matrixes from components of poynting vector?
to plot Quiver(y,z,(Sy),(Sz)) y,z=?
can anyone help me in this regard to get the position matrices?
thanks in advance
3 个评论
Jonathan Epperl
2012-12-26
Okay, maybe I wasn't clear enough, either.
By formatting the code I mean using markup http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup, it's really easy.
By sample code I mean a minimal example that runs by itself and illustrates your problem, not your entire 100 something lines of code, because you really shouldn't expect us to read through all of that...
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Vector Fields 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!