信号检测与估计中,在不同信噪比下对比2ASK 2PSK 2FSK三种不同调制方式的误码性能对比
采用相干解调时,在误码率 相同的情况下,所需要的信噪比2ASK比2FSK高3dB,2FSK比2PSK高3dB,2ASK比2PSK高6dB。反过来,若信噪比r相同,2PSK系统的误码率比2FSK的小,2FSK系统的误码率比2ASK的小,相干解调的2PSK系统的误码率最小。由此看来,在抗加性高斯白噪声方面,相干2PSK性能最好,2FSK次之,2ASK最差。
源程序:
- clear,clc;
- L=10000;
- t=0:0.01*pi:2*pi;
- SNR=-4:0.5:10;
- snr=SNR/10;
- for ii=1:length(snr)
- Sigma(ii)=1/sqrt(2*(10^snr(ii)));%标准差
- psk_error1=0; fsk_error1=0; ask_error1=0; %误码数初始值为0
- psk_error2=0; fsk_error2=0; ask_error2=0;
- S=randi(L);
- for k=1:L
- n=Sigma(ii)*randn(1,length(t)); %一定信噪比下的高斯白噪声
- for i=1:length(t)
- psk1(i)=sin(t(i)); psk2(i)=-sin(t(i)); %2PSK的S0(t)和S1(t)
- fsk1(i)=sin(3*t(i)); fsk2(i)=sin(5*t(i)); %2FSK的S0(t)和S1(t)
- ask1(i)=sin(t(i)); ask2(i)=0; %2ASK的S0(t)和S1(t)
- end
- %------------------2PSK
- overlay11=sum(psk1.^2); overlay12=sum(psk2.^2);
- psk1=psk1/sqrt(overlay11); psk2=psk2/sqrt(overlay12);%进行归一化
- xp1=psk1+n; %接收信号(含有噪声的)
- xp2=psk2+n ;
- %-----------------2FSK
- overlay21=sum(fsk1.^2); overlay22=sum(fsk2.^2);
- fsk1=fsk1/sqrt(overlay21); fsk2=fsk2/sqrt(overlay22);
- xf1=fsk1+n;
- xf2=fsk2+n;
- %-----------------2ASK
- overlay31=sum(ask1.^2);
- ask1=ask1/sqrt(overlay31);
- xa1=ask1+n;
- xa2=ask2+n;
- if S[k]==0 % 假设为H0的情况下
- p1=0; f1=0; a1=0;
- men1=0; men2=0; men3=0;
- for i=1:length(t)
- p1=p1+xp1(i)*(psk2(i)-psk1(i));
- f1=f1+xf1(i)*(fsk2(i)-fsk1(i));
- a1=a1+xa1(i)*(ask2(i)-ask1(i));
- men1=men1+(psk2(i)^2-psk1(i)^2)/2;
- men2=men2+(fsk2(i)^2-fsk1(i)^2)/2;
- men3=men3+(ask2(i)^2-ask1(i)^2)/2;
- end
- if p1>men1
- psk_error1=psk_error1+1;
- end
- if f1>men2
- fsk_error1=fsk_error1+1;
- end
- if a1>men3
- ask_error1=ask_error1+1;
- end
- else %假设为 H1的情况下
- p2=0; f2=0; a2=0; men1=0; men2=0; men3=0;
- for i=1:length(t)
- p2=p2+xp2(i)*(psk2(i)-psk1(i));
- f2=f2+xf2(i)*(fsk2(i)-fsk1(i));
- a2=a2+xa2(i)*(ask2(i)-ask1(i));
- men1=men1+(psk2(i)^2-psk1(i)^2)/2;
- men2=men2+(fsk2(i)^2-fsk1(i)^2)/2;
- men3=men3+(ask2(i)^2-ask1(i)^2)/2;
- end
- if p2<men1
- psk_error2=psk_error2+1;
- end
- if f2<men2
- fsk_error2=fsk_error2+1;
- end
- if a2<men3
- ask_error2=ask_error2+1;
- end
- end
- end
- %误码率
- psk_pe(ii)=(psk_error1+psk_error2)/L;
- fsk_pe(ii)=(fsk_error1+fsk_error2)/L;
- ask_pe(ii)=(ask_error1+ask_error2)/L;
- end
- semilogy(SNR,psk_pe,'*'); hold on;
- semilogy(SNR,fsk_pe,'+'); hold on;
- semilogy(SNR,ask_pe,'o'); hold on;
- %理论值
- snr1=10.^(SNR/10);
- psk_pe_ideal=0.5*erfc(sqrt(snr1));
- fsk_pe_ideal=0.5*erfc(sqrt(0.5*snr1));
- ask_pe_ideal=0.5*erfc(sqrt(0.25*snr1));
- semilogy(SNR,psk_pe_ideal,'-b'); hold on;
- semilogy(SNR,fsk_pe_ideal,'-m'); hold on;
- semilogy(SNR,ask_pe_ideal,'-k'); hold on;
- axis([-4 10 10^(-5) 1]);
- legend('2PSK','2FSK','2ASK','2PSK-ideal','2FSK-ideal','2ASK-ideal');
- grid off;
- xlabel('E/n_0 dB');ylabel('P_e 误码率');
- title('不同信噪比下三种调制方式误码性能仿真');
复制代码
完整的Word格式文档51黑下载地址:
MATLAB仿真程序.zip
(47.72 KB, 下载次数: 26)
|