I want to plot many points in a single pointcare sphere.
Ältere Kommentare anzeigen
This is the complete code i'm using.
close all
%%
X=linspace(-5,5,500);
Y=X; N=500;
[x,y]=meshgrid(X,Y);
%%
r = (x.^2 + y.^2); rho = sqrt(r);
w0 = 3 ;
l = 500*10^-9;
GB = exp(-(r)./w0^2);
%%
ExI = GB.*1 ;
EyI = GB.*0 ;
%%
pi180 = pi/180 ;
EPhase = 0 ; EPhaseD = EPhase*pi180 ;
Phi_d = 45*pi/180 ;
a1 = exp(1i*Phi_d) ;
b1 = exp(1i*EPhaseD) ; b2 = exp(-1i*EPhaseD) ;
for Theta_ERD = 0*pi180:40*pi180:180*pi180
S_Theta_ER = sin(Theta_ERD) ; C_Theta_ER = cos(Theta_ERD);
S2_Theta_ER = S_Theta_ER^2 ; C2_Theta_ER = C_Theta_ER^2;
ER11 = C2_Theta_ER + a1*S2_Theta_ER ;
ER12 = (1-a1)*S_Theta_ER*C_Theta_ER*b2 ;
ER21 = (1-a1)*S_Theta_ER*C_Theta_ER*b1 ;
ER22 = S2_Theta_ER + a1*C2_Theta_ER ;
Ex = (ER11.*ExI + ER12.*EyI) ;
Ey = (ER21.*ExI + ER22.*EyI) ;
%%
S0=(conj(Ex).*Ex)+(conj(Ey).*Ey);
S1=(conj(Ex).*Ex)-(conj(Ey).*Ey);
S2=2.*real(conj(Ex).*Ey);
S3=2.*imag(conj(Ex).*Ey);
threshold = .01;
ns0=sqrt((S1.^2)+(S2.^2)+(S3.^2));
ns1=zeros(size(ns0,1),size(ns0,2));
ns2=zeros(size(ns0,1),size(ns0,2));
ns3=zeros(size(ns0,1),size(ns0,2));
ss=zeros(size(ns0,1),size(ns0,2));
for m = 1:size(ns0,1)
for n = 1:size(ns0,2)
if ns0(m,n)> threshold
ns3(m,n) = ns3(m,n)+(S3(m,n)/ns0(m,n));
ns1(m,n) = ns1(m,n)+(S1(m,n)/ns0(m,n));
ns2(m,n) = ns2(m,n)+(S2(m,n)/ns0(m,n));
end
end
end
%% Stokes parameters
f= 3.5;
avgfact=2^f; %averaging factor
s0=imresize(ns0,1/avgfact);
s1=imresize(ns1,1/avgfact);
s2=imresize(ns2,1/avgfact);
s3=imresize(ns3,1/avgfact);
threshold=.1;
k=1;
for i=1:size(s0,1)
for j=1:size(s0,2)
if s0(i,j)>threshold
stk(k,1)=s1(i,j);
stk(k,2)=s2(i,j);
stk(k,3)=s3(i,j);
stk(k,4)=sqrt(s1(i,j)^2+s2(i,j)^2+s3(i,j)^2);
k=k+1;
end
end
end
H=figure;
[X,Y,Z] = sphere(100);
axis square
box on
r=.999;
surf(r*X,r*Y,r*Z,'EdgeColor','none','FaceColor',[.6 .6 .6],'FaceAlpha', 0.8);
line([-1.3 1.3],[0 0],[0 0],'LineStyle','-','LineWidth',2,'Color',[0 0 0])
line([0 0],[-1.3 1.3],[0 0],'LineStyle','-','LineWidth',2,'Color',[0 0 0])
line([0 0],[0 0],[-1.3 1.3],'LineStyle','-','LineWidth',2,'Color',[0 0 0])
text(1.3,-.1,-.1,'S1','FontSize',15);text(0,1.3,0,'S2','FontSize',15);text(0,0,1.3,'S3','FontSize',15)
axis([-1 1 -1 1 -1 1])
view(122,53)
hold all
phi=-pi:.01:pi;
theta=0;
r3=.315;
r2=.72;
r1=.94;
r0=1;
sx=cos(phi);
sy=sin(phi);
sz=cos(phi.*0-pi/2);
plot3(sx,sy,sz,'k','LineWidth',1.5);
plot3(sx,sz,sy,'k','LineWidth',1.5);
plot3(sz,sy,sx,'k','LineWidth',1.5);
[p q]=size(stk);
for i=1:p
H=plot3(stk(i,1),stk(i,2),stk(i,3),'mo');
hold all
set(H,'markersize',10,'markeredgecolor','g','markerfacecolor','y','color','m','linewidth',1.2)
end
end
Now all the points are ploted seperatly in individual pointcare sphere. I want all points to be plotted in a single sphere. And if possible joint the points with a line.
Any help is appriciated.
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!