MATLAB基于gui的电磁波极化设计

本文主要对电磁波的线极化,圆极化,椭圆极化三种极化状态进行了分析,采用MATLAB编程以及GUI界面设计来实现对三种极化状态图形的表现,有三维模型以及二维模型,采用了实验法,主动操纵实验条件,利用编程设计人为地改变计划状态的控制参数,使计划状态服从于科学认识的需要,以及定量分析法通过改变极化波形中的某一参数来观察波形的改变,最终通过实验观察到了三种极化状态以及其存在的特点。(实验报告私信)

成品实验报告私信

d7583ccf070d4dc3b41f55544e302b89.png

%极化形式段代码

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;

 145f498c0b7b41abb20a1c4b5c8bb255.png

%线极化波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;

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5.23.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值