这个程序16qam误码率为什么这么高,应该如何修改?

新手上路,请多包涵

clc;
M=2;
Fs=16;
nsamp=17;
freq_sep=8;
x=randint(10000,1,M);
y_2fsk=fskmod(x,M,freq_sep,nsamp,Fs);
y_2psk=pskmod(x,M);
y_8psk=pskmod(x,8);
y_16psk=pskmod(x,16);
y_16qam=qammod(x,16);
N=10;
for j=1:N

SNR=j;
y_2fsk_noise=awgn(y_2fsk,SNR-10*log10(Fs),'measured',[],'dB');
 y_2psk_noise=awgn(y_2psk,SNR,'measured',[],'dB');
 y_8psk_noise=awgn(y_8psk,SNR,'measured',[],'dB');
 y_16psk_noise=awgn(y_16psk,SNR,'measured',[],'dB');
 y_16qam_noise=awgn(y_16qam,SNR,'measured',[],'dB');
 z_2fsk=fskdemod(y_2fsk_noise,M,freq_sep,nsamp,Fs);
 z_2psk=pskdemod(y_2psk_noise,M);
 z_8psk=pskdemod(y_8psk_noise,8);
 z_16psk=pskdemod(y_16psk_noise,16);
 z_16qam=pskdemod(y_16qam_noise,16);
 [num_2fsk(j),ber_2fsk(j)]=biterr(x,z_2fsk);
  [num_2psk(j),ber_2psk(j)]=biterr(x,z_2psk);
  [num_8psk(j),ber_8psk(j)]=biterr(x,z_8psk);
  [num_16psk(j),ber_16psk(j)]=biterr(x,z_16psk);
  [num_16qam(j),ber_16qam(j)]=biterr(x,z_16qam);

end
semilogy(1:N,ber_2fsk,'-*b');
hold on;
semilogy(1:N,ber_2psk,'--dk');
hold on;
semilogy(1:N,ber_8psk,'-.dr');
hold on;
semilogy(1:N,ber_16psk,'--xk');
hold on;
semilogy(1:N,ber_16qam,'-.sk');
hold on;
title('不同信噪比下2FSK,2PSK,8PSK,16PSK,16QAM误码性能仿真')
legend('2FSK','2PSK','8PSK','16PSK','16QAM',3);
xlabel('SNR dB');
ylabel('BER')
hold off

阅读 953
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题