文章目录
- 前言
- 一、Rician衰落信道模型的MATLAB代码
- 二、在非相关的平坦Rician衰落信道上传输QPSK符号模型
- 1.MATLAB仿真代码
- 2.仿真结果
前言
本文首先给出莱斯衰落信道的建模函数,然后基于该函数给出在非相关的平坦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信号的传输性能,画图如下: