(27)QPSK信号在非相关平坦莱斯(Rician)衰落信道上的误码率性能MATLAB仿真

发布于:2024-10-17 ⋅ 阅读:(42) ⋅ 点赞:(0)


前言

本文首先给出莱斯衰落信道的建模函数,然后基于该函数给出在非相关的平坦Rician衰落信道上传输QPSK数字调制符号的MATLAB仿真模型。最后,给出在该衰落信道上的QPSK信号的传输性能。


一、Rician衰落信道模型的MATLAB代码

代码如下:

function r = rice_fading(Kdb, N)
K = 10^(Kdb/10);
const = 1/(2*(K+1));
x = randn(1,N);
y = randn(1,N);
r = sqrt(const*((x + sqrt(2*K)).^2 + y.^2));

函数的输入参数Kdb为dB形式的莱斯因子,N为衰落的样本数。返回值r为瑞利衰落信道增益。

二、在非相关的平坦Rician衰落信道上传输QPSK符号模型

1.MATLAB仿真代码

若用si表示在第i个时刻传输的符号,接收到的符号vi可以表示为:

在这里插入图片描述

其中{ri}表示一系列独立的Rician分布随机变量序列,ni是零均值复高斯白噪声过程的样本,其单边功率谱密度为N0。

下面给出MATLAB仿真主程序,其中仿真了在这样的衰落信道上QPSK信号的传输性能。

M = 4;
Kdb = 10;
EbNodB = 0:4:16;

k = log2(M);
EbNolin = 10.^(EbNodB/10);

nIteration = 100000;                      % 迭代(iteration)次数
nSymbol = 10000;
Tstop = 100;
for it_snr = 1:length(EbNolin)
    
    nstd = sqrt(1/(2*k*EbNolin(it_snr)));           % nois standard deviation 噪声标准差,也即噪声的幅度。信号功率=1
    
    bit_err = 0;
    for c = 1:nIteration
        a = randi([0 M-1],nSymbol,1);
        s = pskmod(a,M);                   % QPSK调制
        
        r = rice_fading(Kdb, nSymbol);         % 莱斯分布随机变量,长度和调制符号个数相同
        v_r = s.*r';                       % 衰落信道作用于调制信号:点乘
        v = v_r + nstd*(randn(nSymbol,1) + 1j*randn(nSymbol,1));      % 复高斯白噪声        

        z = pskdemod(v,M);                 % QPSK解调
        errors = biterr(a,z);
        bit_err = bit_err + errors;
        if bit_err >= Tstop
            break
        end
    end
    BER(it_snr) = bit_err/(c*nSymbol*k);      % 总错误比特数/总比特数
end

semilogy(EbNodB, BER,'r-o','LineWidth',1.5);
grid on;
title('QPSK信号在非相关平坦莱斯衰落信道上的误码率性能');
xlabel('EbNo(dB)');
ylabel('BER');

2.仿真结果

仿真结果给出了莱斯衰落信道上QPSK信号的传输性能,画图如下:

在这里插入图片描述



网站公告

今日签到

点亮在社区的每一天
去签到