当前位置:   article > 正文

二进制数字(2ASK)载波调制解调仿真设计(matlab仿真)_二进制数字调制系统 解调 仿真

二进制数字调制系统 解调 仿真

一、实验目的

        了解二进制数字信号2ASK波形特点,掌握2ASK调制解调系统的构成,基带信号、载波和2ASK已调信号之间的关系;掌握利用matlab对2ASK进行仿真的分析方法。

二、实验任务

利用matlab实现对2ASK信号调制与解调的仿真,其中设定码元个数为42,分别给出:

(1)消息信号、2ASK信号和解调信号的波形;

(2)给出2ASK信号在AWGN信道下的误码率和误比特率性能,并与理论值相比较。利用matlab仿真软件编写程序,完成相应实验内容。

简述2ASK调制解调系统的工作原理和程序设计思路,分别给出(1)无噪声时,消息信号、2ASK信号和解调信号的波形;(2)加入AWGN时,给出BER、SER和理论值随SNR变化的曲线。

三、实验代码

2ASK在无噪声情况下的调制与解调代码:

  1. clc,clear;
  2. i=42; %42个码元
  3. j=42000;
  4. t=linspace(0,42,j); %0~42之间产生42000个点行向量,即分成42000份
  5. fc=1; %载波频率
  6. fm=i; %码元速率
  7. %产生基带信号
  8. x=(rand(1,i)) %rand函数产生在0~1之间随机数,共42个
  9. a=round(x); %随机序列,round取最接近小数的整数
  10. st=t;
  11. for n=1:i
  12. if a(n)<1
  13. for m=j/i*(n-1)+1:j/i*n
  14. st(m) = 0;
  15. end
  16. else
  17. for m=j/i*(n-1)+1:j/i*n
  18. st(m)=1;
  19. end
  20. end
  21. end
  22. figure(1);
  23. subplot(221);
  24. plot(t,st);
  25. axis([0,42,-0.2,1.2]);
  26. title('基带信号');
  27. s1=cos(2*pi*fc*t); %载波
  28. subplot(222);
  29. plot(t,s1);
  30. axis([0,42,-1.2,1.2]);
  31. title('载波信号');
  32. e_2ask=st.*s1; %调制
  33. subplot(223);
  34. plot(t,e_2ask);
  35. axis([0,42,-1.2,1.2]);
  36. title('已调信号');
  37. at = e_2ask.*cos(2*pi*fc*t); %相干解调
  38. at=at-mean(at); %因为是单极性波形,还有直流分量,应去掉
  39. [f,af]= T2F(t,at); %通过低通滤波器
  40. [t,at]= lpf(f,af,2*fm);
  41. %采样判决
  42. for m=0:i-1
  43. if at(1,m*1000+500)+0.5<0.5
  44. for j=m*1000+1:(m+1)*1000
  45. at(1,j)=0;
  46. end
  47. else
  48. for j=m*1000+1:(m+1)*1000
  49. at(1,j)=1;
  50. end
  51. end
  52. end
  53. subplot(224);
  54. plot(t,at);
  55. axis([0,42,-0.2,1.2]);
  56. title('相干解调后波形');
  57. function [f,sf]= T2F(t,st)
  58. %利用FFT计算信号的频谱并与信号的真实频谱的抽样比较。
  59. %函数T2F,计算信号的傅立叶变换。
  60. %Input is the time and the signal vectors,the length of time must greater
  61. %than 2
  62. %Output is the frequency and the signal spectrum
  63. dt = t(2)-t(1);
  64. T=t(end);
  65. df = 1/T;
  66. N = length(st);
  67. f=-N/2*df : df : N/2*df-df;
  68. sf = fft(st);
  69. sf = T/N*fftshift(sf);
  70. end
  71. function [t,st]=F2T(f,sf)
  72. %计算信号的反傅立叶变换。
  73. %This function calculate the time signal using ifft function for the input
  74. df = f(2)-f(1);
  75. Fmx = ( f(end)-f(1) +df);
  76. dt = 1/Fmx;
  77. N = length(sf);
  78. T = dt*N;
  79. %t=-T/2:dt:T/2-dt;
  80. t = 0:dt:T-dt;
  81. sff = fftshift(sf);
  82. st = Fmx*ifft(sff);
  83. end
  84. function [t,st]=lpf(f,sf,B)
  85. %This function filter an input data using a lowpass filter
  86. %Inputs: f: frequency samples
  87. % sf: input data spectrum samples
  88. % B: lowpass bandwidth with a rectangle lowpass
  89. %Outputs: t: time samples
  90. % st: output data time samples
  91. df = f(2)-f(1);
  92. T = 1/df;
  93. hf = zeros(1,length(f)); %全零矩阵
  94. bf = [-floor( B/df ): floor( B/df )] + floor( length(f)/2 );
  95. hf(bf)=1;
  96. yf=hf.*sf;
  97. [t,st]=F2T(f,yf);
  98. st = real(st);
  99. end

四、实验结果

图1  无噪声下消息信号、2ASK信号和解调信号的波形

图2 有噪声下消息信号、2ASK信号和解调信号的波形(码元个数42)

图4  误比特数和误码率(SNR=10)

图5  误码率和信噪比之间的关系曲线

如需要完整的matlab仿真代码和实验报告,请自行付积分查看,链接如下:

二进制数字(2ASK)载波调制解调仿真设计(matlab仿真)资源-CSDN文库

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/482424
推荐阅读
相关标签
  

闽ICP备14008679号