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