当前位置:   article > 正文

《通信原理》AM/DSBSC/SSB信号的调制与解调仿真_fm.消息信号是[-3,3]均匀分布的随机整数,产生的时间间隔为 1/10s,用 fm 方法调制

fm.消息信号是[-3,3]均匀分布的随机整数,产生的时间间隔为 1/10s,用 fm 方法调制

一、实验内容

利用matlab实现以下内容:

1.信号的调幅。根据随机产生的整数和已知条件来计算:

(1)AM、DSBSC、SSB信号的消息信号和已调信号的频谱;

(2)AM、DSBSC、SSB信号的消息信号和已调信号的功率及调制效率。

2.信号的解调。在1的基础上计算:

(1)用包络检波器解调该信号,画出AM、DSBSC、SSB信号的原始信号和解调信号。

(2)假设调制信号通过AWGN信道,信噪比为20dB,画出AM、DSBSC、SSB信号的解调后的信号与原始信号。

二、实验结果

        实验一:消息信号是[-3,3]均匀分布的随机整数,产生的时间间隔为1/10s,用AM、DSBSC、LSSB、移相法方法调制载波cos2πfct。假设fc=100,A0=4,0<=t<=10,求:

  1. AM/DSBSC/SSB信号的消息信号和已调信号的频谱。
  2. AM/DSBSC/SSB信号的消息信号和已调信号的功率及调制效率。

1.实验代码

  1. %% AM/DSBSC/SSB信号调幅
  2. ts=0.0025; %信号抽样时间间隔。
  3. t=0:ts:10-ts; %时间矢量。
  4. fs=1/ts; %抽样频率。
  5. df=fs/length(t); %fft的频率分辨率。
  6. z=rng(123); %生成123个种子数。
  7. msg=randi([-3,3],100,1); %生成消息序列。
  8. msg1=msg*ones(1,fs/10); %扩展成取样信号形式。
  9. msg2=reshape(msg1.',1,length(t));
  10. Pm=fft(msg2)/fs; %求消息信号的频率。
  11. f=-fs/2:df:fs/2-df;
  12. figure('name','AM和DSBSC信号仿真','position',[0,40,2000,750]);
  13. subplot(3,2,1);
  14. plot(f,fftshift(abs(Pm)),'r'); %画出消息信号频谱。
  15. title('AM和DSBSC的消息信号频谱','fontname','黑体');
  16. xlabel('f');
  17. ylabel('消息信号频谱','fontname','黑体');
  18. grid on;
  19. A=4;
  20. fc=100; %载波频率。
  21. Sam=(A+msg2).*cos(2*pi*fc*t); %AM已调信号。
  22. Pam=fft(Sam)/fs; %AM已调信号频谱。
  23. Sdsb=msg2.*cos(2*pi*fc*t); %DSBSC已调信号。
  24. Pdsb=fft(Sdsb)/fs; %DSBSC已调信号频谱。
  25. subplot(3,2,3);
  26. plot(f,fftshift(abs(Pam)),'b',f,fftshift(abs(Pdsb)),'g');%画出已调信号频谱。
  27. title('AM和DSBSC的已调信号频谱','fontname','黑体');
  28. axis([-200,200,0,3]);
  29. xlabel('f');
  30. ylabel('消息信号频谱','fontname','黑体');
  31. legend('AM已调信号频谱','DSBSC已调信号频谱','location','n');
  32. grid on;
  33. Pc_AM=sum(abs(Sam).^2)/length(Sam); %已调信号功率。
  34. Ps_AM=Pc_AM-A^2/2; %消息信号功率。
  35. eta_AM=Ps_AM/Pc_AM; %调制效率
  36. Pc_DSBSC=sum(abs(Sdsb).^2)/length(Sdsb); %已调信号功率。
  37. Ps_DSBSC=sum(abs(msg2).^2)/length(msg2); %消息信号功率。
  38. %% SSB的调制-用滤波法形成单边带(SSB)信号
  39. ts=0.0025; %抽样信号的时间间隔。
  40. t=0:ts:10-ts; %时间矢量。
  41. fs=1/ts; %抽样频率。
  42. df=fs/length(t); %fft的频率分辨率。
  43. msg=randi([-3,3],100,1); %生成消息序列。
  44. z=rng(123); %随机种子数为123。
  45. msg1=msg*ones(1,fs/10); %扩展成取样信号形式。
  46. msg2=reshape(msg1.',1,length(t));
  47. Pm=fft(msg2)/fs; %求消息信号的频谱。
  48. f=-fs/2:df:fs/2-df;
  49. subplot(3,2,2);
  50. plot(f,fftshift(abs(Pm))); %画出消息信号频谱。
  51. title('SSB的消息信号频谱');
  52. fc=100; %载波频率。
  53. Sdsb=msg2.*cos(2*pi*fc*t); %DSB信号。
  54. Pdsb=fft(Sdsb)/fs; %DSB信号频谱。
  55. f_stop=100; %低通滤波器的截止频率。
  56. n_stop=floor(f_stop/df);
  57. Hlow=zeros(size(f)); %设计低通滤波器。
  58. Hlow(1:n_stop)=1;
  59. Hlow(length(f)-n_stop+1:end)=1;
  60. Plssb=Pdsb.*Hlow; %LSSB信号频谱。
  61. subplot(3,2,4);
  62. plot(f,fftshift(abs(Plssb)),'y'); %画出已调信号频谱。
  63. Slssb=real(ifft(Plssb))*fs;
  64. Pc_SSB_FM=sum(abs(Slssb).^2)/length(Slssb); %滤波法的SSB已调信号功率。
  65. Ps_SSB_FM=sum(abs(msg2).^2)/length(msg2); %滤波法的SSB消息信号功率。
  66. %% SSB的调制-用相移法形成单边带(SSB)信号
  67. s1=0.5*msg2.*cos(2*pi*fc*t); %USSB信号的同相分量。
  68. hmsg=imag(hilbert(msg2)); %消息信号的Hibert变换。
  69. s2=0.5*hmsg.*sin(2*pi*fc*t); %USSB信号的正交分量。
  70. Sussb=s1-s2; %完整的USSB信号。
  71. Pussb=fft(Sussb)/fs; %USSB信号频谱。
  72. subplot(3,2,4);
  73. hold on;
  74. plot(f,fftshift(abs(Pussb))); %画出已调信号频谱。
  75. title('滤波法和相移法的SSB已调信号频谱');
  76. axis auto;
  77. legend('滤波法的SSB已调信号频谱','相移法的SSB已调信号频谱','location','n');
  78. Pc_SSB_PSM=sum(abs(Sussb).^2)/length(Sussb);%相移法的SSB已调信号功率。
  79. Ps_SSB_PSM=sum(abs(msg2).^2)/length(msg2); %相移法的SSB消息信号功率。
  80. %% AM和DSBSC的功率及占比值
  81. fprintf('AM已调信号功率:Pc_AM=%.2f\n',Pc_AM);
  82. fprintf('AM消息信号功率:Ps_AM=%.2f\n',Ps_AM);
  83. disp(['AM调制效率:eta_AM=',num2str(100*eta_AM),'%']);
  84. fprintf('DSBSC已调信号功率:Pc_DSBSC=%.2f\n',Pc_DSBSC);
  85. fprintf('DSBSC消息信号功率:Ps_DSBSC=%.2f\n',Ps_DSBSC);
  86. %% SSB的功率及占比值
  87. fprintf('滤波法的SSB已调信号功率:Pc_SSB_FM=%.2f\n',Pc_SSB_FM);
  88. fprintf('滤波法的SSB消息信号功率:Ps_SSB_FM=%.2f\n',Ps_SSB_FM);
  89. fprintf('相移法的SSB已调信号功率:Pc_SSB_PSM=%.2f\n',Pc_SSB_PSM);
  90. fprintf('相移法的SSB消息信号功率:Ps_SSB_PSM=%.2f\n',Ps_SSB_PSM);
  91. W=[Pc_AM,Ps_AM,Pc_DSBSC,Ps_DSBSC,Pc_SSB_FM,Ps_SSB_FM,Pc_SSB_PSM,Ps_SSB_PSM];
  92. %% AM/DSBSC/SSB的功率占比图
  93. subplot(3,2,6);
  94. pie3(W);
  95. title('AM/DSBSC/SSB的功率占比图','fontname','黑体');
  96. legend('AM已调信号功率','AM消息信号功率','DSBSC已调信号功率','DSBSC消息信号功率','滤波法的SSB已调信号功率','滤波法的SSB消息信号功率','相移法的SSB已调信号功率','相移法的SSB消息信号功率');

2.实验结果

         

实验二:消息信号是[-3,3]均匀分布的随机整数,产生的时间间隔为1/2s,用AM、DSBSC、移相法方法调制载波cos2πfct。假设fc_AM=fc_DSBSC=100,fc_SSB=300,A0=4,0<=t<=5,求:

(1)   用包络检波器解调该信号,画出AM信号的原始信号和解调信号。

(2)   假设调制信号通过AWGN信道,信噪比为20dB,画出AM信号的解调后的信号与原始信号。

(3)   用同步检波解调该信号,设低通滤波器的截止频率为100Hz,增益为2,画出DSBSC信号的原始信号和解调信号。

(4)   假设调制信号通过AWGN信道,信噪比为20dB,画出DSBSC信号的解调后的信号与原始信号。

(5)   用同步检波解调该信号,设低通滤波器的截止频率为100Hz,增益为4,画出SSB信号的原始信号和解调信号。

(6)   假设调制信号通过AWGN信道,信噪比为20dB,画出SSB信号的解调后的信号与原始信号。

1.实验代码

  1. %% AM/DSBSC/SSB信号的解调
  2. %% AM和DSBSC信号的解调
  3. a=2;b=2;
  4. ts=0.0025; %信号抽样时间间隔。
  5. t=0:ts:5-ts; %时间矢量。
  6. fs=1/ts; %抽样频率。
  7. df=fs/length(t); %fft的频率分辨率。
  8. f=-fs/2:df:fs/2-df;
  9. z=rng(123); %生成123个种子数。
  10. msg=randi([-3,3],10,1); %生成消息序列。
  11. msg1=msg*ones(1,fs/2); %扩展成取样信号形式。
  12. msg2=reshape(msg1.',1,length(t));
  13. figure('name','AM和DSBSC信号解调','position',[0,40,2000,750]);
  14. subplot(a,b,1);
  15. plot(t,msg2,'r'); %画出消息信号频谱。
  16. ylim([0,5]);
  17. title('AM和DSBSC的消息信号','fontname','黑体');
  18. fc_DSBSC=100;A=4;
  19. Sdsb=msg2.*cos(2*pi*fc_DSBSC*t); %DSBSC已调信号。
  20. y_AM=Sdsb.*cos(2*pi*fc_DSBSC*t); %DSBSC相干解调。
  21. Y_AM=fft(y_AM)./fs; %DSBSC解调后的频谱。
  22. f_stop=100; %DSBSC低通滤波器的截止频率。
  23. n_stop=floor(f_stop/df);
  24. Hlow=zeros(size(f)); %DSBSC设计低通滤波器。
  25. Hlow(1:n_stop)=2;
  26. Hlow(length(f)-n_stop+1:end)=2;
  27. DEM=Y_AM.*Hlow; %DSBSC解调信号通过低通滤波器。
  28. dem=real(ifft(DEM))*fs; %DSBSC最终得到的解调信号。
  29. Sam=(A+msg2).*cos(2*pi*fc_DSBSC*t); %AM已调信号。
  30. dems=abs(hilbert(Sam))-A; %AM包络检波,并且去掉直流分量。
  31. subplot(a,b,2);
  32. plot(t,dems,'b',t,dem,'g'); %画出解调信号。
  33. ylim([0,5]);
  34. title('AM和DSBSC的无噪声解调信号','fontname','黑体');
  35. legend('AM的无噪声解调信号','DSBSC的无噪声解调信号','location','b');
  36. y_AM=awgn(Sam,20,'measured'); %AM调制信号通过AWGN信道。
  37. dems2=abs(hilbert(y_AM))-A; %AM包络检波,并且去掉直流分量。
  38. y1_DSBSC=awgn(Sdsb,20,'measured'); %DSBSC调制信号通过AWGN信道。
  39. y2_DSBSC=y1_DSBSC.*cos(2*pi*fc_DSBSC*t);%DSBSC相干解调。
  40. Y2_DSBSC=fft(y2_DSBSC)./fs; %DSBSC解调信号的频谱。
  41. DEM1=Y2_DSBSC.*Hlow; %DSBSC解调信号通过低通滤波器。
  42. dem1=real(ifft(DEM1))*fs; %DSBSC最终得到的解调信号。
  43. subplot(a,b,3);
  44. plot(t,dems2,'b',t,dem1,'g'); %画出AM解调信号。
  45. ylim([0,5]);
  46. title('信噪比为20dB时的AM和DSBSC的解调信号','fontname','黑体');
  47. legend('信噪比为20dB时的AM的解调信号','信噪比为20dB时的DSBSC的解调信号','location','b');
  48. %% SSB信号的解调
  49. y1_SSB=awgn(Sussb,20,'measured'); %调制信号通过AWGN信道。
  50. y2_SSB=y1_SSB.*cos(2*pi*fc*t); %相干解调。
  51. Y2_SSB=fft(y2_SSB)./fs; %解调信号的频谱。
  52. DEM1=Y2_SSB.*Hlow; %解调信号通过低通滤波器。
  53. dem1=real(ifft(DEM1))*fs; %最终得到的解调信号。
  54. subplot(a,b,4);
  55. plot(t,dem1,'m');
  56. title('SSB信噪比为20dB时的解调信号');
  57. fc=300; %载波频率。
  58. s1=0.5*msg2.*cos(2*pi*fc*t); %USSB信号的同相分量。
  59. hmsg=imag(hilbert(msg2)); %消息信号的Hibert变换。
  60. s2=0.5*hmsg.*sin(2*pi*fc*t); %USSB信号的正交分量。
  61. Sussb=s1-s2; %完整的USSB信号。
  62. y_SSB=Sussb.*cos(2*pi*fc*t); %相干解调。
  63. Y_SSB=fft(y_SSB)./fs; %解调后的频谱。
  64. f_stop=100; %低通滤波器的截止频率。
  65. n_stop=floor(f_stop/df);
  66. Hlow=zeros(size(f)); %设计低通滤波器的截止频率。
  67. Hlow(1:n_stop)=4;
  68. Hlow(length(f)-n_stop+1:end)=4;
  69. DEM=Y_SSB.*Hlow; %解调信号通过低通滤波器。
  70. dem=real(ifft(DEM))*fs; %最终得到的解调信号。
  71. subplot(a,b,4);
  72. hold on;
  73. plot(t,dem,'b');
  74. title('SSB无噪声的解调信号');
  75. msg1=msg*ones(1,fs/2); %扩展取样信号形式。
  76. msg2=reshape(msg1.',1,length(t));
  77. Pm=fft(msg2)/fs; %求信息信号的频谱。
  78. subplot(a,b,4);
  79. hold on;
  80. plot(t,msg2,'g'); %画出消息信号频谱。
  81. title('SSB的原始消息信号','fontname','黑体');
  82. ylim([0,5]);
  83. legend('SSB的原始消息信号','SSB无噪声的解调信号','SSB信噪比为20dB时的解调信号','location','b');

2.实验结果

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

闽ICP备14008679号