matlab通过信道仿真绘制信噪比变化的曲线

使用MATLAB绘制不同衰落下信道容量随平均接收信噪比变化的代码实现:

% 信道容量比较:瑞利衰落、Nakagami衰落、对数正态衰落
clc; clear; close all;

% 参数设置
snr_dB = 0:1:30;          % 信噪比范围(dB)
snr_linear = 10.^(snr_dB/10);  % 转换为线性值
m = 1;                      % Nakagami形状参数(m=1对应瑞利衰落)
sigma_log = 8;              % 对数正态衰落的标准差(dB)

% 初始化容量存储
capacity_ray = zeros(size(snr_linear));
capacity_nak = zeros(size(snr_linear));
capacity_log = zeros(size(snr_linear));

% 计算各信道容量
for i = 1:length(snr_linear)
    Gamma = snr_linear(i);

    % 瑞利衰落容量(数值积分)
    capacity_ray(i) = integral(@(gamma) rayleigh_capacity(gamma, Gamma), 0, Inf, 'RelTol', 1e-6);

    % Nakagami衰落容量(数值积分)
    capacity_nak(i) = integral(@(gamma) nakagami_capacity(gamma, Gamma, m), 0, Inf, 'RelTol', 1e-6);

    % 对数正态衰落容量(蒙特卡洛模拟)
    capacity_log(i) = lognormal_capacity(Gamma, sigma_log);
end

% 绘图
figure;
semilogy(snr_dB, capacity_ray, 'b-o', 'LineWidth', 1.5, 'DisplayName', 'Rayleigh');
hold on;
semilogy(snr_dB, capacity_nak, 'g-s', 'LineWidth', 1.5, 'DisplayName', 'Nakagami (m=1)');
semilogy(snr_dB, capacity_log, 'r-d', 'LineWidth', 1.5, 'DisplayName', 'Log-Normal');
grid on;
xlabel('Average SNR (dB)');
ylabel('Capacity (bps/Hz)');
title('Channel Capacity Comparison');
legend('show', 'Location', 'northwest');
ylim([1e-3 1e3]);

% 瑞利衰落容量函数
function C = rayleigh_capacity(gamma, Gamma)
    pdf = (gamma/Gamma^2) .* exp(-gamma/Gamma);
    C = integral(@(x) x.*pdf(x), 0, Gamma, 'RelTol', 1e-6);
end

% Nakagami衰落容量函数
function C = nakagami_capacity(gamma, Gamma, m)
    Omega = Gamma * gamma(m + 0.5)/gamma(m);  % 调整尺度参数
    pdf = (2*m^m*gamma.^(2*m-1)) ./ (gamma(m)*Omega^m) .* exp(-m*gamma/Omega);
    C = integral(@(x) x.*pdf(x), 0, 3*Gamma, 'RelTol', 1e-6);
end

% 对数正态衰落容量函数(蒙特卡洛)
function C = lognormal_capacity(Gamma, sigma_log)
    N = 1e5;  % 样本数量
    sigma_linear = sigma_log * log(10)/10;  % 转换为线性标准差
    mu_x = log(Gamma) - (sigma_log^2*(log(10))^2)/20;  % 均值调整

    % 生成对数正态分布样本
    x = mu_x + sigma_linear*randn(N,1);
    gamma_samples = 10.^(x/10);

    % 计算平均容量
    C = mean(log2(1 + gamma_samples));
end

代码说明:

  1. 信道模型​:
  • 瑞利衰落​:使用指数分布的概率密度函数进行数值积分
  • Nakagami衰落​:通过调整形状参数m(m=1时退化为瑞利衰落)和尺度参数Ω进行数值积分
  • 对数正态衰落​:通过蒙特卡洛模拟生成随机样本,计算平均容量
  1. 关键参数​:
  • snr_dB:信噪比范围(0-30 dB)
  • sigma_log:对数正态衰落的标准差(8 dB对应典型阴影效应)
  1. 输出结果​:
  • 使用半对数坐标系显示容量变化
  • 三条曲线分别对应三种衰落模型

曲线特征:

  1. 瑞利衰落​:容量增长最慢,无直射路径的多径衰落典型特征
  2. Nakagami衰落​(m>1):容量增长快于瑞利衰落,反映更优的衰落环境
  3. 对数正态衰落​:容量最低,反映阴影效应导致的信噪比波动影响

注意事项:

  1. 蒙特卡洛模拟采样数(N=1e5)可根据计算资源调整
  2. Nakagami积分上限设为3*Gamma以保证精度
  3. 对数正态参数通过期望值匹配确保平均SNR正确性

该代码完整实现了三种衰落下信道容量的对比分析,可用于无线通信系统性能评估和理论研究。

参考通过具体的信道实例对比几种信道容量,绘出对数正态衰落、瑞利衰落、Nakagami衰落下确定的容量随平均接收信噪比变化的曲线

posted @ 2025-05-14 12:16  老夫写代码  阅读(71)  评论(0)    收藏  举报