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

📄 multipathfading.m

📁 多径衰落信道模型源代码
💻 M
字号:
%多径衰落信道
%按F5开始运行
%主要用于多径无线接口
%多径衰落信道公式和图形
%M文件运行后,输入显示为蓝色
%输出为红色, 输出载波变动、增加、减弱
%       L
%a=an*exp(-j*2*pi*fc*nT)
%c=a*exp(-j*2*pi*fc*time_1);                 
%g=int(c*sin(B*(v-n*T))/(B*(v-n*T)),v);                 
%x=g*[zeros(1,100),signal_in]                
%signal_out=symsum(x,time_1,0,N);               
%       k

% S(t)--------T-----T-----T-----T-------------!     Delay
%          !     !     !     !     !          !  
%          !     !     !     !     !          !
%         *g0   *g1   *g2   *g3   *g4  ---   *gN    response                    
%          !     !     !     !     !          !
%          !     !     !     !     !          !
%          !-----!-----!-----!-----!----------!-----Sum----r(t)signal out

close all;
N_path=5;                                         %设定多径时延个数为N个
f=2;                                              %信号频率取f=2kHZ
f_c=5;                                            %未调制的载波频率,f_c>=2f
an=1;                                           %设定衰减系数
N_point=1000;                                     %对信号取点总数
B=10;                                            %设定系统带宽(T=1/B),信道最大传输速率为20Mbps
                                                 %在无噪情况下,B=R/2,R/2=10*1024*1024b/s约等于10b/us
T=1/B                                            %采样周期ms
time_1 = (linspace (0, N_path, N_point));        %时间单位为ms
x_min=-0.1;
x_max=0.1;
y_min=0;
y_max=1;                                       %定义画图范围
signal_in = sin(2*pi*f*time_1);         %输入正弦波
plot (time_1, signal_in, 'b')                  %蓝色输入信号
syms x;                                        %定义变量x
grid on;                                       %画网格线
xlabel('时间');ylabel('振幅');
title('多径衰落信道信号')
hold on
signal_1=zeros(1,N_point);                                               %定义输出信号长度 
for n = 1:1:N_path                                                         %叠代
    a=an*exp(-j*2*pi*f_c*n*T);                                             %
    a_1=a*exp(-j*2*pi*f_c*time_1(n));                                       %时延的复衰减
    c=a_1*exp(-j*2*pi*f_c*time_1(n));                                      %定义复低通冲激响应
%     c=a*exp(-j*2*pi*f_c*x);                                        %定义复低通冲激响应 
    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+signal_in;
    plot(time_1,signal_out,'g')                                            %红色信号输出线
    pause (0.5)                                                            %时间间隔
end
plot(time_1,signal_out,'r')                                            %红色信号输出线

figure;
xlabel('频率');ylabel('振幅');
title('多径衰落信道信号');
grid on;                                                                   %画网格线
hold on
f_out=-0.5:1/N_point:0.5-1/N_point;                                        %对输出频谱图横轴fo取点
signal_ff=fft(signal_out);                                                 %进行FFT变换
signal_fff=signal_ff/max(signal_ff);                                       %归一化处理
signal_f=fftshift(abs(signal_fff));                                        %归拢处理
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;                                        %对输出频谱图横轴fo取点
signal0=sin(2*pi*f*time_1);
signal1=fft(signal0);                                                      %进行FFT变换
signal2=signal1/max(signal1);                                              %归一化处理
signal3=fftshift(abs(signal2));                                            %归拢处理
plot (f_out,signal3,'r')                                                   %红色频谱图
axis([x_min x_max y_min y_max])                                            %设定坐标轴取值范围
%plot (f_out,abs(signal_f),'r')                                            %红色频谱图
hold off











%signal_out=zeros(1,2000)
%for n = 1:1:N                                                             %叠代
    %c=a*exp(-j*2*pi*fc*time_1(n));                                        %定义复低通冲激响应 
    %gg=int(c*sin(B*(v-n*T))/(B*(v-n*T)),v);                               %冲激响应函数
    %g=vpa(gg);                                                            %将符号常数转变为数值常数
    %signal_out=signal_out+g*[zeros(1,n*100),signal_in,zeros(1,(N-n)*100)];%输出信号
    %plot (time_1,(signal_out),'r')                                        %红色输出线
    %pause (0.5)                                                           %时间间隔
    %end
    
%for n =1:1:N                                                              %叠代
    %c=a*exp(-j*2*pi*fc*time_1(n));                                        %定义复低通冲激响应 
    %g=int(c*sin(B*(v-n*T))/(B*(v-n*T)),v);                                %冲激响应函数         
    %x=g*[zeros(1,n*100),signal_in(1:end-(n*100))];
    %signal_out=symsum(x,1,N)                                              %输出信号
    %plot (time_1,(signal_out),'r')                                        %红色输出线
    %pause (0.5)                                                           %时间间隔
%end

⌨️ 快捷键说明

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