我们使用raylrnd函数生成服从瑞利分布的随机变量rayleighSamples。其中,sigma是瑞利分布的尺度参数。然后使用histogram函数绘制瑞利分布的直方图。
我们先生成服从Rayleigh分布的随机变量rayleighSamples,然后生成服从标准高斯分布的随机变量gaussianSamples。接下来,使用这两个随机变量的乘积和平方根来构造服从莱斯分布的随机变量ricianSamples。最后,使用histogram函数绘制莱斯分布的直方图,并设置'Normalization'参数为'pdf'以绘制概率密度函数。
% 瑞利分布和莱斯分布仿真
% 设置仿真参数
N = 10000; % 仿真次数
SN = 55;%序号
K_dB = [-20*(1+SN/130), 0, 15]; % 分别对应 -20*(1+55/130)dB, 0dB, 15dB
K_linear = 10.^(K_dB/10); % 将信道增益转换为线性比例
% 初始化结果数组
rayleigh_result = zeros(N, length(K_dB));
rice_result = zeros(N, length(K_dB));
% 执行仿真
for i = 1:length(K_dB)
% 生成高斯随机信道
complex_channel = (randn(N, 1) + 1i*randn(N, 1))/sqrt(2);
% 计算瑞利分布信道
rayleigh_channel = complex_channel;
% 计算莱斯分布信道
rice_channel = sqrt(K_linear(i)/(K_linear(i)+1)) + sqrt(1/(K_linear(i)+1)) * complex_channel;
% 记录仿真结果
rayleigh_result(:,i) = abs(rayleigh_channel).^2;
rice_result(:,i) = abs(rice_channel).^2;
end
% 绘制仿真结果的直方图
figure;
for i = 1:length(K_dB)
subplot(length(K_dB), 2, 2*i-1);
hist(rayleigh_result(:,i), 100);
title(sprintf('瑞利分布(K = %.2f dB)', K_dB(i)));
xlabel('Channel Gain');
ylabel('频率');
subplot(length(K_dB), 2, 2*i);
hist(rice_result(:,i), 100);
title(sprintf('莱斯分布 (K = %.2f dB)', K_dB(i)));
xlabel('Channel Gain');
ylabel('频率');
end