本文主要对电磁波的线极化,圆极化,椭圆极化三种极化状态进行了分析,采用MATLAB编程以及GUI界面设计来实现对三种极化状态图形的表现,有三维模型以及二维模型,采用了实验法,主动操纵实验条件,利用编程设计人为地改变计划状态的控制参数,使计划状态服从于科学认识的需要,以及定量分析法通过改变极化波形中的某一参数来观察波形的改变,最终通过实验观察到了三种极化状态以及其存在的特点。(实验报告私信)
成品实验报告私信
%极化形式段代码
switch(get(handles.popupmenu1,'Value'))
case 2
set(handles.in1,'String','请输入Ex');
set(handles.in2,'String','请输入Ey');
set(handles.in3,'String','请输入f') ;
set(handles.edit4,'String','请勿输入') ;
set(handles.in4,'String','φ为固定值') ;
set(handles.pushbutton1,'String','13象限');
set(handles.pushbutton2,'String','24象限');
case 3
set(handles.in1, 'String','请输入Ex');
set(handles.in2, 'String',' ');
set(handles.edit2,'String','Ex=Ey') ;
set(handles.in3, 'String', '请输入f');
set(handles.in4, 'String','请输入φ');
set(handles.pushbutton1,'String','右旋');
set(handles.pushbutton2,'String','左旋');
case 4
set(handles.in1, 'String','请输入Ex');
set(handles.in2, 'String','请输入Ey');
set(handles.in3, 'String','请输入f');
set(handles.in4, 'String','请输入φ');
set(handles.pushbutton1,'String','右旋');
set(handles.pushbutton2,'String','左旋');
end;
%线极化波13象限以及圆极化波右旋椭圆极化波右旋代码
switch(get(handles.popupmenu1,'Value'))
case 2%选择线极化波
figure
c = 2.99792458e8; %光速
%T = 1 ; %周期
x = ( 0:0.3:30) ; %传输距离
beta =0.8;
f = str2double(get(handles.edit3,'String')) ;
Eym = str2double(get(handles.edit2,'String'));
Ezm = str2double(get(handles.edit1,'String'));
set(handles.edit4,'String','0') ;
l = zeros(size(x));
t = 0;
phi = 0;
omega = 2*pi*f;
subplot(1,2,1)
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
quiver3(x,l,l,l,Ey,Ez); %以(x,0,0)为起点画出传播方向上每一点的电场矢量图
axis([0 30 -4 4 -4 4]);view(20,40); %观察范围和视角
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01/omega*2*pi;
end
hold off;
avil=VideoWriter('左旋圆极化波.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
close(avil)
subplot(1,2,2)
x = 0; %沿传播方向取一个垂直截面,x=0
Scope = 1.5*max([Eym Ezm]); %设置显示范围
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
% quiver(0,0, Ey, Ez,1); %以(0,0)为起点绘制电场矢量箭头图
plot(Ey, Ez,'*');%另外一种展示方式
axis equal;
hold on
axis([-Scope Scope -Scope Scope]);
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01/omega*2*pi;
end
hold off;
avil=VideoWriter('左旋圆极化波yoz平面截图.avi'); %转化并保存动画
avil.FrameRate=5;
%open(avil);
%writeVideo(avil, mov);
case 3
figure
c = 2.99792458e8; %光速
%T = 1 ; %周期
x = ( 0:0.3:30) ; %传输距离
beta =0.8;
f = str2double(get(handles.edit3,'String')) ;
Eym = str2num(get(handles.edit1,'String'));
Ezm = str2num(get(handles.edit1,'String'));
l = zeros(size(x));
t = 0;
phi = -pi/2;
omega = 2*pi*f;
subplot(1,2,1)
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
quiver3(x,l,l,l,Ey,Ez); %以(x,0,0)为起点画出传播方向上每一点的电场矢量图
axis([0 30 -4 4 -4 4]);view(20,40); %观察范围和视角
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01 ;
end
hold off;
avil=VideoWriter('左旋圆极化波.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
close(avil)
subplot(1,2,2)
x = 0; %沿传播方向取一个垂直截面,x=0
Scope = 1.5*max([Eym Ezm]); %设置显示范围
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
% quiver(0,0, Ey, Ez,1); %以(0,0)为起点绘制电场矢量箭头图
plot(Ey, Ez,'*');%另外一种展示方式
axis equal;
hold on
axis([-Scope Scope -Scope Scope]);
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01;
end
hold off;
avil=VideoWriter('左旋圆极化波yoz平面截图.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
case 4
figure
c = 2.99792458e8; %光速
%T = 1 ; %周期
x = ( 0:0.3:30) ; %传输距离
beta =0.8;
f = str2double(get(handles.edit3,'String'));
Eym = str2num(get(handles.edit2,'String'));
Ezm = str2num(get(handles.edit1,'String'));
l = zeros(size(x));
t = 0;
phi = pi/2;
omega = 2*pi*f;
subplot(1,2,1)
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
quiver3(x,l,l,l,Ey,Ez); %以(x,0,0)为起点画出传播方向上每一点的电场矢量图
axis([0 30 -4 4 -4 4]);view(20,40); %观察范围和视角
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01 ;
end
hold off;
avil=VideoWriter('左旋圆极化波.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
close(avil)
subplot(1,2,2)
x = 0; %沿传播方向取一个垂直截面,x=0
Scope = 1.5*max([Eym Ezm]); %设置显示范围
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
% quiver(0,0, Ey, Ez,1); %以(0,0)为起点绘制电场矢量箭头图
plot(Ey, Ez,'*');%另外一种展示方式
axis equal;
hold on
axis([-Scope Scope -Scope Scope]);
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01;
end
hold off;
avil=VideoWriter('左旋圆极化波yoz平面截图.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
end
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
switch(get(handles.popupmenu1,'Value'))
case 2
figure
c = 2.99792458e8; %光速
%T = 1 ; %周期
x = ( 0:0.3:30) ; %传输距离
beta =0.8;
%T = str2double(get(handles.edit3,'String'));
f = str2double(get(handles.edit3,'String'));
Eym = str2num(get(handles.edit2,'String'));
Ezm = str2num(get(handles.edit1,'String'));
set(handles.edit3,'String','±π');
l = zeros(size(x));
t = 0;
phi = pi;
omega = 2*pi*f;
subplot(1,2,1)
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
quiver3(x,l,l,l,Ey,Ez); %以(x,0,0)为起点画出传播方向上每一点的电场矢量图
axis([0 30 -4 4 -4 4]);view(20,40); %观察范围和视角
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01/omega*2*pi;
end
hold off;
avil=VideoWriter('左旋圆极化波.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
close(avil)
subplot(1,2,2)
x = 0; %沿传播方向取一个垂直截面,x=0
Scope = 1.5*max([Eym Ezm]); %设置显示范围
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
% quiver(0,0, Ey, Ez,1); %以(0,0)为起点绘制电场矢量箭头图
plot(Ey, Ez,'*');%另外一种展示方式
axis equal;
hold on
axis([-Scope Scope -Scope Scope]);
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01;
end
hold off;
avil=VideoWriter('左旋圆极化波yoz平面截图.avi'); %转化并保存动画
avil.FrameRate=5;
%open(avil);
%writeVideo(avil, mov);
case 3
figure
c = 2.99792458e8; %光速
%T = 1 ; %周期
x = ( 0:0.3:30) ; %传输距离
beta =0.8;
f = str2double(get(handles.edit3,'String'));
Eym = str2num(get(handles.edit1,'String'));
Ezm = str2num(get(handles.edit1,'String'));
l = zeros(size(x));
t = 0;
phi = pi/2;
omega = 2*pi*f;
subplot(1,2,1)
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
quiver3(x,l,l,l,Ey,Ez); %以(x,0,0)为起点画出传播方向上每一点的电场矢量图
axis([0 30 -4 4 -4 4]);view(20,40); %观察范围和视角
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01 ;
end
hold off;
avil=VideoWriter('左旋圆极化波.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
close(avil)
subplot(1,2,2)
x = 0; %沿传播方向取一个垂直截面,x=0
Scope = 1.5*max([Eym Ezm]); %设置显示范围
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
% quiver(0,0, Ey, Ez,1); %以(0,0)为起点绘制电场矢量箭头图
plot(Ey, Ez,'*');%另外一种展示方式
axis equal;
hold on
axis([-Scope Scope -Scope Scope]);
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01;
end
hold off;
avil=VideoWriter('左旋圆极化波yoz平面截图.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
case 4
figure
c = 2.99792458e8; %光速
T = 1; %周期
x = ( 0:0.3:30); %传输距离
beta =0.8;
f = str2double(get(handles.edit3,'String'));
Eym = str2num(get(handles.edit2,'String'));
Ezm = str2num(get(handles.edit1,'String'));
l = zeros(size(x));
t = 0;
phi = -pi/2;
omega = 2*pi*f;
subplot(1,2,1)
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
quiver3(x,l,l,l,Ey,Ez); %以(x,0,0)为起点画出传播方向上每一点的电场矢量图
axis([0 30 -4 4 -4 4]);view(20,40); %观察范围和视角
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01 ;
end
hold off;
avil=VideoWriter('左旋圆极化波.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
close(avil)
subplot(1,2,2)
x = 0; %沿传播方向取一个垂直截面,x=0
Scope = 1.5*max([Eym Ezm]); %设置显示范围
for i=1:150
Ey = Eym*cos(omega*t-beta*x);
Ez = Ezm*cos(omega*t-beta*x-phi);
% quiver(0,0, Ey, Ez,1); %以(0,0)为起点绘制电场矢量箭头图
plot(Ey, Ez,'*');%另外一种展示方式
axis equal;
hold on
axis([-Scope Scope -Scope Scope]);
pause(0.01);
mov(i)= getframe(gcf);
t = t + 0.01;
end
hold off;
avil=VideoWriter('左旋圆极化波yoz平面截图.avi'); %转化并保存动画
avil.FrameRate=5;
open(avil);
writeVideo(avil, mov);
end;