【发布时间】:2013-04-22 13:28:12
【问题描述】:
我正在尝试对 16-QAM 进行调制和解调,然后尝试比较理论和模拟 BER。
我没有在图表中看到simulation-line。
我无法理解我的代码有什么问题。有人可以帮帮我吗?
代码如下:
M=16;
SNR_db = [0 2 4 6 8 10 12];
x = randi([0,M-1],1000,1);
hmod = modem.qammod(16);
hdemod = modem.qamdemod(hmod,'SymbolOrder', 'Gray');
tx = zeros(1,1000);
for n=1:1000
tx(n) = modulate(hmod, x(n));
end
rx = zeros(1,1000);
rx_demod = zeros(1,1000);
for j = 1:7
err = zeros(1,7);
err_t = zeros(1,7);
for n = 1:1000
rx(n) = awgn(tx(n), SNR_db(j));
rx_demod(n) = demodulate(hdemod, rx(n));
if(rx_demod(n)~=x(n))
err(j) = err(j)+1;
end
end
% err_t = err_t + err;
end
theoryBer = 3/2*erfc(sqrt(0.1*(10.^(SNR_db/10))));
figure
semilogy(SNR_db,theoryBer,'-',SNR_db, err, '^-');
grid on
legend('theory', 'simulation');
xlabel('Es/No, dB')
ylabel('Symbol Error Rate')
title('Symbol error probability curve for 16-QAM modulation')
【问题讨论】:
-
抱歉,您的问题能具体一点吗?我可以执行你的代码,那里有一个数字。实际上我看不出有什么问题!
-
您正在覆盖循环的每次迭代中的错误计数“err”。即使你修正了它也不完全正确,因为 err 是解调信号与传输信号不匹配的计数,而理论曲线是概率。
-
您遇到的另一个错误是您为解调器指定了灰色编码,但没有为调制器指定。
标签: matlab signal-processing wireless