瑞利衰落信道容量及瑞利衰落条件下中断容量对AWGN容量的占比

      前几天老师让推导了瑞利信道容量公式以及信道容量与信噪比的关系,差不多就是这个:

      前面两周一度以为是把这个题手工肝出来,结果就是肝不出来(好难过好伤心我好菜),然后开会的时候发现老师主要看仿真出来的图,同时还顺手又给我了一个任务:仿真fundamental of wireless communicating这本书上figure5.14 \epsilon-outage capacity as a fraction of AWGN capacity under Rayleigh fading, for \epsilon= 0.1 and \epsilon= 0. 01(灰灰哭泣),就是这个图:

      好吧,算是一波未平一波又起了,不过明确了目标啥都好做了,MATLAB走起。首先对于这个信道可以看做单入单出的MIMO信道,也就是SISO信道,扒拉了一位大佬的MIMO信道容量仿真代码然后稍微修改了一下(下已附链接,如侵权请联系删除):

      就是改成了利用raylrnd函数产生瑞利随机变量h_{i}对其遍历,将收发天线数置为1,遍历原理如下:

该图截自参考文章二

      至此,第一个任务应该是完成了吧,应该没错吧(灰灰哭泣)。代码被我改的和第二个任务整合一起了,文末一起放出来。

      对于无线通信原理这本书上,有下面这几个公式:

      高信噪比下:

C_{\epsilon }\approx C_{awng.h} - log(\frac{1}{F^{-1}(1-\epsilon )}) = C_{awng.h} + log(F^{-1}(1-\epsilon ))

      低信噪比下:

C_{\epsilon } \approx C_{awgn.l}F^{-1}(1-\varepsilon )

      公式好多不全部打出来了,(灰灰手累)

      那么什么算高信噪比,什么算低信噪比呢?在原文中我并没有找到关于高低的定义,可能是我没仔细看吧,不过在郑贱平老师的lecture4中我找到了如下的讲解:

      我理解的意思就是在0<x<<1的时候认为是低信噪比条件,低 SNR 时慢衰落信道中断容量仅为AWGN信道容量的 \epsilon 部分,在其他情况下认为是高信噪比条件,也就是高 SNR时,慢衰落信道中断容量比高斯信道容量小-log(\epsilon )(因为log(\epsilon )为负,所以是小-log\left ( \epsilon \right ))。

      仿真图:

      好吧,跟书上那个曲线走势基本一致,任务完成。

 代码如下:

%% 参数设置
clear;clc;close all;
SNRs_dB=-10:0.1:40;       % 信噪比
sigma1 = 0.01;sigma2 = 0.1;
SNRs=10.^(SNRs_dB/10); 
N_SNR = length(SNRs);
N_iter=1000;            % 迭代次数
C = zeros(1, N_SNR);
%% 主函数
NT = 1;NR = 1;
I = eye(1);%1*1矩阵
for iiiter = 1:N_iter
    H = sqrt(0.5)*(raylrnd(NR,NT)+1j*raylrnd(NR,NT));
    HH = H*H'; 
    for iiSNR = 1:N_SNR
        C(1,iiSNR) = C(1,iiSNR)+log2(real(det(I+SNRs(iiSNR)/NT*HH)));
    end
end
C = C./N_iter;%遍历容量

for SNRa=-10:0.1:40
    if SNRa>0&&SNRa<0.1
        Ca1 = 1/sigma1*C;
        Ca2 = 1/sigma2*C;
    else
        Ca1 = C - log2(sigma1);
        Ca2 = C - log2(sigma2);
    end
end

Cq1 = C./Ca1;Cq2 = C./Ca2;
figure('name','capacity of rayleigh fading channel')
plot(SNRs_dB,C);
figure('name','outage capacity as a fraction of AWGN capacity under Rayleigh fading')
plot(SNRs_dB,Cq1,'b',SNRs_dB,Cq2,'r');
xlabel('SNR[dB]'); 
ylabel('bps/Hz');
set(gca,'fontsize',10); 
grid on
s1='{\it sigma}=0.01'; 
s2='{\it sigma}=0.1'; 
legend(s1,s2)

参考文章一:举熙熙然回巧献技 初识MIMO(二):MIMO的信道容量及仿真

参考文章二:xwcbigboy 遍历容量(各态历经容量)

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Matlab中,可以使用以下步骤来模拟多径高斯和瑞利衰落信道: 1. 定义信道参数:信道类型、载波频率、发射天线数、接收天线数、时延、多径衰落参数等。 2. 生成信道系数:对于高斯信道,可以使用randn函数生成复高斯随机数,对于瑞利衰落信道,可以使用Jakes模型生成信道系数。 3. 生成信号:可以使用randn函数生成复高斯随机数作为发送信号。 4. 加入噪声:可以使用awgn函数为信号添加高斯白噪声。 5. 接收信号:将发送信号通过信道进行传输,得到接收信号。 6. 解调信号:对接收信号进行解调,得到接收到的信息。 下面是一个简单的Matlab代码示例,用于模拟高斯信道和瑞利衰落信道: ```matlab % 定义信道参数 fc = 2.4e9; % 载波频率 fs = 10e6; % 采样率 fd = 200; % 多普勒频移 Ts = 1/fs; % 采样周期 t = 0:Ts:1-Ts; % 时间序列 L = 5; % 多径数目 tau = [0 0.1 0.3 0.5 0.7]*1e-6; % 多径时延 pdb = db2pow([-10 -5 0 2 3]); % 多径功率 M = 2; % 调制阶数 SNR = 10; % 信噪比 % 生成高斯信道系数 h_gaussian = (randn(1,L) + 1j*randn(1,L)) .* sqrt(pdb/2); % 生成瑞利衰落信道系数 h_rayleigh = sqrt(pdb/2) .* exp(1j*2*pi*fd*t) .* exp(-1j*2*pi*fc*tau)*exp(-1*abs(tau)*10e3); % 生成发送信号 x = randi([0 M-1],1,1000); % 通过信道进行传输 y_gaussian = filter(h_gaussian,1,x); y_rayleigh = filter(h_rayleigh,1,x); % 添加高斯白噪声 y_gaussian = awgn(y_gaussian,SNR,'measured'); y_rayleigh = awgn(y_rayleigh,SNR,'measured'); % 解调信号 rx_gaussian = pskdemod(y_gaussian,M); rx_rayleigh = pskdemod(y_rayleigh,M); % 计算误码率 [number_G,ber_G] = biterr(rx_gaussian,x); [number_R,ber_R] = biterr(rx_rayleigh,x); % 显示结果 disp(['高斯信道误码率:',num2str(ber_G)]); disp(['瑞利衰落信道误码率:',num2str(ber_R)]); ``` 这段代码会输出高斯信道和瑞利衰落信道的误码率。可以根据需要修改信道参数以及解调方法等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Donshow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值