(11)MATLAB莱斯(Rician)衰落信道仿真2


前言

首先给出莱斯衰落信道仿真模型,该模型由直射路径分量和反射路径分量组成,其中反射路径分量由瑞利衰落信道模型构成,该模型可以很方便地建立瑞利衰落信道的仿真。给出莱斯衰落信道的MATLAB仿真代码,并对比了莱斯衰落信道和瑞利衰落信道,揭示了两者之间的内在关系。


一、莱斯衰落信道仿真模型

根据《(10)MATLAB莱斯(Rician)衰落信道仿真1》知道,在莱斯衰落信道中,接收信号为直射路径信号和反射路径信号之和,而莱斯因子K正是直射路径与反射路径信号的相对功率。

若K>>1,则信道趋近于直射路径(高斯信道);若K<<1,则信道趋近于瑞利衰落。

在莱斯衰落信道仿真模型中,一般使用直射路径部分和瑞利衰落部分是分开的方法,仿真模型如下图所示:

莱斯衰落信道仿真模型

其中,
在这里插入图片描述

由图1可写出莱斯衰落信道模型的表示式:

在这里插入图片描述

下面使用该仿真模型,给出莱斯衰落信道的MATLAB仿真代码。

二、仿真代码与结果

1.仿真代码

首先,建立瑞利衰落信道仿真函数:

function Rayleigh_ch = Rayleigh_channel(nSamples)
% Rayleigh Channel Model
% Input : nSamples    - number of channel samples
% Output: Rayleigh_ch - complex channel vector
    sigma = sqrt(0.5);
    Rayleigh_ch = sigma*(randn(1,nSamples) + 1j*randn(1,nSamples));
end

注:该代码详细说明请参考:(9)MATLAB瑞利衰落信道仿真2

其次,使用瑞利衰落信道函数,建立莱斯衰落信道仿真函数:

function Rician_ch = Rician_channel(K_dB, nSamples)
% Rician Channel Model
% Input : K_dB      - K factor in dB
%         nSamples  - number of channel  samples
% Output: Rician_ch - complex channel vector
K = 10^(K_dB/10);
Rician_ch = sqrt(K/(K+1)) + sqrt(1/(K+1))*Rayleigh_channel(nSamples);

最后,给出莱斯衰落信道仿真模型

close all
clear all
clc

samples_number = 1e5;
bins_number = 50;                                      % number of bins in the histogram

% Rayleigh channel model
Rayleigh_ch = Rayleigh_channel(samples_number);

[elements_number,x] = hist(abs(Rayleigh_ch),bins_number);
px = elements_number/samples_number/mean(diff(x));
figure()
plot(x,px,'r-','LineWidth',1.5)
hold on
grid on


% Rician channel model
K_dB = [-50, 15];                                       % K in dB
Rician_ch = zeros(2,samples_number);
color = ['b','m'];
line = ['-','--'];
marker = ['o','*'];
for i=1:length(K_dB)
    Rician_ch(i,:) = Rician_channel(K_dB(i),samples_number);
    [elements_number,x] = hist(abs(Rician_ch(i,:)),bins_number);
    px = elements_number/samples_number/mean(diff(x));
    plot(x, px, [color(i),line(i),marker(i)],'LineWidth',1.5);
end

title('The PDF of Rayleigh fading channel and Rician fading channel')
xlabel('x')
ylabel('Occurance of x: px')                            % Occurance rate
legend('Rayleigh','Rician, K=-50dB','Rician, K=15dB')

2.仿真结果画图

仿真代码运行结果画图如下:

在这里插入图片描述

从仿真图中可以看到,若K>>1,则莱斯衰落信道趋近于高斯信道;若K<<1,则信道趋近于瑞利衰落信道。该仿真结果与理论分析一致。

三、后续:

下一篇文章将会给出莱斯随机变量的概率密度函数的MATLAB代码。

四、参考文献:

Michel C. Jeruchim, Philip Balaban, and K. Sam Shanmugan , Simulation of Communication Systems, Second Edition : Methodology, Modeling, and Techniques


莱斯衰落信道是一种常见的无线通信信道,其信道响应可以通过Rayleigh fading和LOS成分的线性叠加来表示。在MATLAB中,可以通过以下步骤实现莱斯衰落信道: 1. 定义信号参数:信号频率、采样率、符号周期等。 2. 定义莱斯衰落参数:LOS成分的功率、Rayleigh fading的功率、相位等。 3. 生成Rayleigh fading信道:通过使用randn函数生成随机信号,再通过高斯滤波器进行平滑处理,最后加上相位偏移得到Rayleigh fading信道。 4. 生成LOS信道:直接生成幅度为1的复数信号。 5. 将Rayleigh fading信道与LOS信道进行线性叠加,得到莱斯衰落信道。 下面是一个简单的MATLAB代码示例: ```matlab % 定义信号参数 fs = 1e6; % 采样率 fc = 100e6; % 信号频率 T = 1/fc; % 符号周期 % 定义莱斯衰落参数 K = 2; % Rician因子,越大越接近LOS p_los = 1; % LOS成分的功率 p_rayleigh = 0.5; % Rayleigh fading的功率 phi = pi/4; % 相位 % 生成Rayleigh fading信道 n = 0:1/fs:T-1/fs; % 采样点 rayleigh = sqrt(p_rayleigh/2)*(randn(size(n))+1i*randn(size(n))); % 生成随机信号 b = fir1(100,0.01); % 高斯滤波器 rayleigh = filter(b,1,rayleigh); % 平滑处理 rayleigh = rayleigh.*exp(1i*phi); % 加上相位偏移 % 生成LOS信道 los = sqrt(p_los)*ones(size(n)); % 线性叠加得到莱斯衰落信道 rician = sqrt(K/(K+1))*los + sqrt(1/(K+1))*rayleigh; ``` 在生成莱斯衰落信道后,可以将其用于仿真无线通信系统,进行误码率等性能指标的分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值