找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9567|回复: 1
打印 上一主题 下一主题
收起左侧

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最差。

源程序:
  1. clear,clc;
  2. L=10000;
  3. t=0:0.01*pi:2*pi;
  4. SNR=-4:0.5:10;
  5. snr=SNR/10;
  6. for ii=1:length(snr)
  7.     Sigma(ii)=1/sqrt(2*(10^snr(ii)));%标准差
  8.     psk_error1=0; fsk_error1=0; ask_error1=0;   %误码数初始值为0
  9.     psk_error2=0; fsk_error2=0; ask_error2=0;
  10.     S=randi(L);
  11.     for k=1:L
  12.         n=Sigma(ii)*randn(1,length(t)); %一定信噪比下的高斯白噪声
  13.        for i=1:length(t)
  14.             psk1(i)=sin(t(i)); psk2(i)=-sin(t(i));    %2PSK的S0(t)和S1(t)
  15.             fsk1(i)=sin(3*t(i)); fsk2(i)=sin(5*t(i));   %2FSK的S0(t)和S1(t)
  16.             ask1(i)=sin(t(i)); ask2(i)=0;          %2ASK的S0(t)和S1(t)      
  17.          end
  18.         %------------------2PSK
  19.         overlay11=sum(psk1.^2); overlay12=sum(psk2.^2);
  20.         psk1=psk1/sqrt(overlay11); psk2=psk2/sqrt(overlay12);%进行归一化
  21.         xp1=psk1+n; %接收信号(含有噪声的)
  22.         xp2=psk2+n ;
  23.         %-----------------2FSK
  24.         overlay21=sum(fsk1.^2); overlay22=sum(fsk2.^2);
  25.         fsk1=fsk1/sqrt(overlay21); fsk2=fsk2/sqrt(overlay22);
  26.         xf1=fsk1+n;
  27.         xf2=fsk2+n;
  28.         %-----------------2ASK
  29.         overlay31=sum(ask1.^2);
  30.         ask1=ask1/sqrt(overlay31);
  31.         xa1=ask1+n;
  32.         xa2=ask2+n;                                    
  33.         if  S[k]==0  % 假设为H0的情况下
  34.            p1=0; f1=0; a1=0;
  35.            men1=0; men2=0; men3=0;
  36.             for i=1:length(t)
  37.                 p1=p1+xp1(i)*(psk2(i)-psk1(i));
  38.                 f1=f1+xf1(i)*(fsk2(i)-fsk1(i));
  39.                 a1=a1+xa1(i)*(ask2(i)-ask1(i));
  40.                 men1=men1+(psk2(i)^2-psk1(i)^2)/2;
  41.                 men2=men2+(fsk2(i)^2-fsk1(i)^2)/2;
  42.                 men3=men3+(ask2(i)^2-ask1(i)^2)/2;
  43.             end
  44.             if p1>men1
  45.                psk_error1=psk_error1+1;
  46.             end
  47.             if f1>men2
  48.                 fsk_error1=fsk_error1+1;
  49.             end
  50.             if a1>men3
  51.                 ask_error1=ask_error1+1;
  52.             end
  53.         else  %假设为 H1的情况下
  54.            p2=0; f2=0; a2=0; men1=0; men2=0; men3=0;
  55.             for i=1:length(t)
  56.                 p2=p2+xp2(i)*(psk2(i)-psk1(i));
  57.                 f2=f2+xf2(i)*(fsk2(i)-fsk1(i));
  58.                 a2=a2+xa2(i)*(ask2(i)-ask1(i));
  59.                 men1=men1+(psk2(i)^2-psk1(i)^2)/2;
  60.                 men2=men2+(fsk2(i)^2-fsk1(i)^2)/2;
  61.                 men3=men3+(ask2(i)^2-ask1(i)^2)/2;
  62.             end
  63.            if p2<men1
  64.                psk_error2=psk_error2+1;
  65.             end
  66.             if f2<men2
  67.                 fsk_error2=fsk_error2+1;
  68.             end
  69.             if a2<men3
  70.                 ask_error2=ask_error2+1;
  71.             end
  72.         end
  73.     end
  74.     %误码率
  75.     psk_pe(ii)=(psk_error1+psk_error2)/L;
  76.     fsk_pe(ii)=(fsk_error1+fsk_error2)/L;
  77.     ask_pe(ii)=(ask_error1+ask_error2)/L;
  78. end
  79. semilogy(SNR,psk_pe,'*'); hold on;
  80. semilogy(SNR,fsk_pe,'+'); hold on;
  81. semilogy(SNR,ask_pe,'o'); hold on;
  82. %理论值
  83. snr1=10.^(SNR/10);
  84. psk_pe_ideal=0.5*erfc(sqrt(snr1));
  85. fsk_pe_ideal=0.5*erfc(sqrt(0.5*snr1));
  86. ask_pe_ideal=0.5*erfc(sqrt(0.25*snr1));
  87. semilogy(SNR,psk_pe_ideal,'-b'); hold on;
  88. semilogy(SNR,fsk_pe_ideal,'-m'); hold on;
  89. semilogy(SNR,ask_pe_ideal,'-k'); hold on;
  90. axis([-4 10 10^(-5) 1]);
  91. legend('2PSK','2FSK','2ASK','2PSK-ideal','2FSK-ideal','2ASK-ideal');
  92. grid off;
  93. xlabel('E/n_0 dB');ylabel('P_e 误码率');
  94. title('不同信噪比下三种调制方式误码性能仿真');
复制代码

完整的Word格式文档51黑下载地址:
MATLAB仿真程序.zip (47.72 KB, 下载次数: 26)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:293767 发表于 2018-3-19 14:52 | 只看该作者
由蒙特卡洛实验实现MATLAB仿真
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表