⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monday_g.m

📁 本程序为微波视距信道的仿真
💻 M
字号:


close all;
N_path=4;                                         
f=1;                                              
f_c=4;                                            
an=1;                                           
N_point=2000;                                     
B=20;                                            
                                                 
T=1/B                                            
time_1 = (linspace (0, N_path, N_point));        
x_min=-0.05;
x_max=0.05;
y_min=0;
                                     
signal_in = sin(2*pi*f*time_1);               
plot (time_1, signal_in, 'b')                  
syms x;                                        
grid on;                                       
xlabel('时间');ylabel('振幅');
title('多径衰落信道信号')
hold on
signal_1=zeros(1,N_point);                                               
signal_2=zeros(1,N_point);
signal_3=zeros(1,N_point);
n=1
if  n<N_path                                                         
    a=an*exp(-j*2*pi*f_c*n*T);                                             
    
    c=a*exp(-j*2*pi*f_c*time_1(n));                                    

    gg=int(c*sin(pi*B*(x-n*T))/(pi*B*(x-n*T)),x,0,N_path*T);                    
    g=double(gg);                                                          
    s_1=signal_in/cos(2*pi*f_c*time_1(n));
    signal_1=signal_1+g*[zeros(1,n*N_point/N_path*T),s_1(1:end-n*N_point/N_path*T)];   
    signal_out=signal_1;
    plot(time_1,signal_out,'g')                                            
    pause (0.5)                                                            
    
 n=1+n;
    a=an*exp(-j*2*pi*f_c*n*T);                                             
    
    c=a*exp(-j*2*pi*f_c*time_1(n));                                      

    gg=int(c*sin(pi*B*(x-n*T))/(pi*B*(x-n*T)),x,0,N_path*T);                     
    g=double(gg);                                                          
    s_1=signal_in/cos(2*pi*f_c*time_1(n));
    signal_2=signal_2+g*[zeros(1,n*N_point/N_path*T),s_1(1:end-n*N_point/N_path*T)];   
    signal_out=signal_2;
    plot(time_1,signal_out,'g')                                            
    pause (0.5)                                                            
    
n=n+1;                                                        
    a=an*exp(-j*2*pi*f_c*n*T);                                             
    
    c=a*exp(-j*2*pi*f_c*time_1(n));                                      
                                      
    gg=int(c*sin(pi*B*(x-n*T))/(pi*B*(x-n*T)),x,0,N_path*T);                     
    g=double(gg);                                                          
    s_1=signal_in/cos(2*pi*f_c*time_1(n));
    signal_3=signal_3+g*[zeros(1,n*N_point/N_path*T),s_1(1:end-n*N_point/N_path*T)];   
    signal_out=signal_3;
    plot(time_1,signal_out,'g')                                            
    pause (0.5)                                                            
end

signal_out=signal_1+signal_in+signal_2+signal_3;
plot(time_1,signal_out,'r')                                            
legend('输入信号','多径信号1','多径信号2','多径信号3','输出信号');

figure;
xlabel('频率');ylabel('振幅');
title('输出信号');
grid on;                                                                   
hold on
f_out=-0.5:1/N_point:0.5-1/N_point;                                        
signal_ff=fft(signal_out);                                                 
                                     
signal_f=fftshift(abs(signal_ff));                                       
y_max=max(signal_f);
plot (f_out,signal_f,'r')                                                 


axis([x_min x_max y_min y_max])                                            
hold off


figure;
xlabel('频率');ylabel('振幅');
title('输入信号');
grid on;                                                                   
hold on
f_out=-0.5:1/N_point:0.5-1/N_point;                                        

signal1=fft(signal_in);                                                      

signal2=fftshift(abs(signal1));                                            

y_max=max(signal2);
plot (f_out,signal2,'r')                                                   
axis([x_min x_max y_min y_max])                                            

hold off


figure;
xlabel('频率');ylabel('振幅');
title('输入输出信号频率差值图');
grid on;                                                                   
hold on
f_out=-0.5:1/N_point:0.5-1/N_point;                                        

 signal_cd=abs(signal2-signal_f)                                                

                                            

y_max=max(signal_cd);
plot (f_out,signal_cd,'r')                                                   
axis([x_min x_max y_min y_max])                                            

hold off


figure;
xlabel('频率');ylabel('相位');
title('输出信号相位图');
grid on;                                                                   
hold on
f_out=-0.5:1/N_point:0.5-1/N_point;                                        
signal_ff=fft(signal_out);                                                 
                                     
signal_f=fftshift(angle(signal_ff));                                       
y_max=max(signal_f);
plot (f_out,signal_f,'r')                                                 


axis([-0.5 0.5 -pi pi])                                            
hold off

figure;
xlabel('频率');ylabel('相位');
title('输入信号相位图');
grid on;                                                                   
hold on
f_out=-0.5:1/N_point:0.5-1/N_point;                                        
signal_ff=fft(signal_in);                                                 
                                     
signal_f=fftshift(angle(signal_ff));                                       
y_max=max(signal_f);
plot (f_out,signal_f,'r')                                                 


axis([-0.5 0.5 -pi pi])                                            
hold off

figure;
xlabel('频率');ylabel('相位');
title('输入输出信号相位差值图');
grid on;                                                                   
hold on
f_out=-0.5:1/N_point:0.5-1/N_point;                                        

 signal_cd=fftshift(angle(fft(signal_out-signal_in)))                                                
 
 signal_ff=fft(signal_in);                                                 
                                     
signal_f=fftshift(angle(signal_ff));  


                                            

%y_max=max(signal_cd);
plot (f_out,signal_cd-signal_f,'r')                                                   
axis([-0.5 0.5 -pi pi])                                            

hold off

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -