基于MATLAB的ASK,FSK,PSK误码率对比仿真,输出调制后波形以及误码率曲线
1.算法描述
在数字通信的三种调制方式(ASK、FSK、PSK)中, 就频带利用率和抗噪声性能(或功率利用率)两个方面来看,一般而言,都是PSK系统最佳。所以PSK在 中、高速数据传输中得到了广泛的应用。
ASK: 幅度键控可以通过乘法器和开关电路来实现。载波在数字信号1或0的控制下通或断,在信号为1的状态载波接通,此时传输信道上有载波出现;在信号为0的状态下,载波被关断,此时传输信道上无载波传送。那么在接收端我们就可以根据载波的有无还原出数字信号的1和0。
2-ASK信号功率谱密度的特点如下:
(1)由连续谱和离散谱两部分构成;连续谱由传号的波形g(t)经线性调制后决定,离散谱由载波分量决定;
(2)已调信号的带宽是基带脉冲波形带宽的二倍。
FSK:频移键控是利用两个不同频率f1和f2的振荡源来代表信号1和0,用数字信号的1和0去控制两个独立的振荡源交替输出。对二进制的频移键控调制方式,其有效带宽为B=2xF+2Fb,xF是二进制基带信号的带宽也是FSK信号的最大频偏,由于数字信号的带宽即Fb值大,所以二进制频移键控的信号带宽B较大,频带利用率小。
2-FSK功率谱密度的特点如下:
(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1和f2位置;
(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。
PSK:在相移键控中,载波相位受数字基带信号的控制,如在二进制基带信号中为0时,载波相位为0或π,为1时载波相位为π或0。载波相位和基带信号有一一对应的关系,从而达到调制的目的。
2-PSK信号的功率密度有如下特点:
(1) 由连续谱与离散谱两部分组成;
(2) 带宽是绝对脉冲序列的二倍;
(3) 与2ASK功率谱的区别是当P=1/2时,2PSK无离散谱,而2ASK存在离散谱。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | %ASK sa1= sin (2* pi *f1*t); E1= sum (sa1.^2); sa1=sa1/ sqrt (E1); %unit energy sa0=0* sin (2* pi *f1*t); %FSK sf0= sin (2* pi *f1*t); E= sum (sf0.^2); sf0=sf0/ sqrt (E); sf1= sin (2* pi *f2*t); E= sum (sf1.^2); sf1=sf1/ sqrt (E); %PSK sp0=- sin (2* pi *f1*t)/ sqrt (E1); sp1= sin (2* pi *f1*t)/ sqrt (E1); .......................................................... figure (1) subplot (411) stairs (0:10,[b(1:10) b(10)], 'linewidth' ,1.5) axis ([0 10 -0.5 1.5]) title ( 'Message Bits' ); grid on subplot (412) tb=0:1/30:10-1/30; plot (tb, ask(1:10*30), 'b' , 'linewidth' ,1.5) title ( 'ASK Modulation' ); grid on subplot (413) plot (tb, fsk(1:10*30), 'r' , 'linewidth' ,1.5) title ( 'FSK Modulation' ); grid on subplot (414) plot (tb, psk(1:10*30), 'k' , 'linewidth' ,1.5) title ( 'PSK Modulation' ); grid on xlabel ( 'Time' ); ylabel ( 'Amplitude' ) %AWGN for snr=0:20 askn=awgn(ask,snr); pskn=awgn(psk,snr); fskn=awgn(fsk,snr); ......................................................... %BER errA=0;errF=0; errP=0; for i =1:n if A( i )==b( i ) errA=errA; else errA=errA+1; end if F( i )==b( i ) errF=errF; else errF=errF+1; end if P( i )==b( i ) errP=errP; else errP=errP+1; end end BER_A(snr+1)=errA/n; BER_F(snr+1)=errF/n; BER_P(snr+1)=errP/n; end figure (2) subplot (411) stairs (0:10,[b(1:10) b(10)], 'linewidth' ,1.5) axis ([0 10 -0.5 1.5]); grid on title ( 'Received signal after AWGN Channel' ) subplot (412) tb=0:1/30:10-1/30; plot (tb, askn(1:10*30), 'b' , 'linewidth' ,1.5) title ( 'Received ASK signal' ); grid on subplot (413) plot (tb, fskn(1:10*30), 'r' , 'linewidth' ,1.5) title ( 'Received FSK signal' ); grid on subplot (414) plot (tb, pskn(1:10*30), 'k' , 'linewidth' ,1.5) title ( 'Received PSK signal' ); grid on figure (3) semilogy (0:20,BER_A, 'b' , 'linewidth' ,2) title ( 'BER Vs SNR' ) grid on; hold on semilogy (0:20,BER_F, 'r' , 'linewidth' ,2) semilogy (0:20,BER_P, 'k' , 'linewidth' ,2) xlabel ( 'Eo/No(dB)' ) ylabel ( 'BER' ) hold off legend ( 'ASK' , 'FSK' , 'PSK' ); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)