用Viterbi算法实现频率选择性信道中单载波系统使用BPSK调制解调的最大似然检测的基带仿真其中发送方一次性发送N=100个码元。多径条数两条h0=1h1=05。得到信噪比为0、1、2、3、4、5、6、7 dB时的误码率误码率精确到10-4。要求用Matlab语言编程。
以下为Matlab代码实现:
% 频率选择性信道中单载波系统使用BPSK调制解调的最大似然检测的基带仿真
% 发送方一次性发送N个码元
N = 100;
% 多径条数
L = 2;
% 信道冲激响应
h = [1 0.5];
% 信噪比
SNR = [0:7];
% 误码率
BER = zeros(size(SNR));
for i = 1:length(SNR)
% 生成随机发送比特
s = randi([0 1], 1, N);
% BPSK调制
x = 2*s - 1;
% 发送信号经过信道
y = zeros(1, N+length(h)-1);
for j = 1:length(h)
y(j:N+j-1) = y(j:N+j-1) + h(j)*x;
end
% 加入高斯白噪声
n = sqrt(0.5)*randn(1, N+length(h)-1);
y = y + 10^(-SNR(i)/20)*n;
% 最大似然检测
s_hat = zeros(1, N);
for j = 1:N
y_tmp = y(j:j+length(h)-1);
s_hat(j) = (y_tmp*h') > 0;
end
% 计算误码率
BER(i) = sum(s ~= s_hat) / N;
end
% 绘制误码率曲线
semilogy(SNR, BER, 'o-');
xlabel('SNR (dB)');
ylabel('BER');
grid on;
注意,这里使用了随机发送比特,因此每次运行结果可能不同
原文地址: https://www.cveoy.top/t/topic/hxnQ 著作权归作者所有。请勿转载和采集!