标题:
2ASK 2PSK 2FSK在不同信噪比下三种调制方式误码性能MATLAB仿真
[打印本页]
作者:
BinaryIvan
时间:
2018-3-18 21:56
标题:
2ASK 2PSK 2FSK在不同信噪比下三种调制方式误码性能MATLAB仿真
信号检测与估计中,在不同信噪比下对比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)
2018-3-18 21:53 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
BinaryIvan
时间:
2018-3-19 14:52
由蒙特卡洛实验实现MATLAB仿真
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1