文章目录
前言
本文通过将接收信号总功率设置为1,重写了莱斯衰落信道上接收信号幅度的理论PDF式。然后用MATLAB代码生成了在具有不同莱斯因子K的Ricean平坦衰落信道下接收到的信号样本,并计算了PDF的估计值。最终通过画图给出仿真结果。
一、改写莱斯分布概率密度函数的理论值
对于《(11)MATLAB莱斯(Rician)衰落信道仿真2》和《(13)MATLAB莱斯(Rician)衰落信道仿真3》中描述的一般莱斯过程,接收信号幅度的概率密度函数服从莱斯分布:
式中,I0()为第一类零阶修正贝塞尔函数。
另外,平坦莱斯衰落信道模型可以用Ω和K两个参数来描述。Ω为直射路径和反射路径的总功率:
K为直射路径与反射路径的功率比:
根据式(2)和式(3),莱斯衰落信道上接收信号幅度的理论PDF式(1)可改写如下:
下面使用该理论PDF式对莱斯衰落信道进行MATLAB建模仿真。
二、仿真代码
以下代码生成了在具有不同莱斯因子K的Ricean平坦衰落信道下接收到的信号样本。仿真中,假设直射路径和反射路径的总功率为1,即Ω = β^2 + 2σ^2 = 1。仿真结果将给出接收信号样本幅度的直方图。
代码如下:
c
clc
close all
clear all
%% Simulate receieved signal samples due to Ricean flat-fading
K_factors = [0, 3, 7, 12, 20]; % 莱斯因子K,直接设置线性值
colors = {'b', 'r', 'k', 'g', 'm'};
index = 1; % 多条曲线的颜色索引
N = 1e5; % 样本数
figure()
for K = K_factors % 每个循环,对应一个莱斯因子K
mu = sqrt(K/(2*(K+1))); % 均值
sigma = sqrt(1/(2*(K+1))); % 标准差
ric = mu + sigma.*randn(1,N) + 1j*(mu + sigma.*randn(1,N)); % 生成平均功率为1的莱斯衰落样本samples
% 平均功率
display(['Average power : ', num2str(mean(abs(ric).^2))]);
[elements_number,bin] = hist(abs(ric),50); % 使用samples估计PDF
plot(bin,elements_number/trapz(bin,elements_number),[colors{index}, '*']);
% 莱斯分布的PDF理论值
x = 0: 0.05: 3; % 莱斯随机变量
Omega = 1; % 总平均功率设为1
z = 2*x*sqrt(K*(K+1 )/Omega); % 修正贝塞尔函数用
I0_z = besseli(0,z); % 第一类零阶修正贝塞尔函数
pdf = (2*x*(K+1)/Omega) .* exp(-K-(x.^2*(K+1)/Omega)) .* I0_z; % 莱斯分布的PDF理论式
hold on;
plot(x, pdf, colors{index},'LineWidth', 1.5);
index = index + 1 ;
end
grid on;
title('莱斯分布随机变量的概率密度');
xlabel('随机变量x');
ylabel('概率密度pdf(x)');
legend('K=0估计值', 'K=0理论值', ...
'K=3估计值', 'K=3理论值', ...
'K=7估计值', 'K=7理论值', ...
'K=12估计值', 'K=12理论值', ...
'K=20估计值', 'K=20理论值');
xlim([0 3]);
三、仿真结果
仿真结果给出接收信号样本幅度的概率密度估计:
总结
至此,通过7篇文章分析了瑞利衰落信道和莱斯衰落信道的理论和MATLAB仿真:
(8)MATLAB瑞利衰落信道仿真1
(9)MATLAB瑞利衰落信道仿真2
(10)MATLAB莱斯(Rician)衰落信道仿真1
(11)MATLAB莱斯(Rician)衰落信道仿真2
(12)MATLAB莱斯(Rician)衰落信道仿真2补充:莱斯衰落信道与莱斯随机变量
(13)MATLAB莱斯(Rician)衰落信道仿真3
(14)MATLAB莱斯(Rician)衰落信道仿真4
瑞利分布和莱斯分布都是通过数学方法对信道模型的物理特性进行建模的。然而,一些实验数据并不能很好地符合这两种分布。因此,有必要寻找一种更通用的衰落分布,使其可以适应多种实测数据,这种分布就是Nakagami衰落分布。后续将对Nakagami衰落分布进行介绍,并给出MATLAB仿真代码。