Dsb1.m
上传用户:loeagle
上传日期:2013-03-02
资源大小:1236k
文件大小:3k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. % dsb1.m
  2. % Matlab demonstration script for DSB-AM modulation. The message signal
  3. % is +1 for 0 < t < t0/3, -2 for t0/3 < t < 2t0/3 and zero otherwise.
  4. echo on
  5. t0=.15;                              % signal duration
  6. ts=0.001;                             % sampling interval
  7. fc=250;                               % carrier frequency
  8. snr=20;                               % SNR in dB (logarithmic)
  9. fs=1/ts;                              % sampling frequency
  10. df=0.3;                               % desired freq. resolution
  11. t=[0:ts:t0];                          % time vector
  12. snr_lin=10^(snr/10);                  % linear SNR
  13. % message signal
  14. m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];
  15. c=cos(2*pi*fc.*t);                    % carrier signal
  16. u=m.*c;                               % modulated signal
  17. [M,m,df1]=fftseq(m,ts,df);            % Fourier transform 
  18. M=M/fs;                               % scaling                   
  19. [U,u,df1]=fftseq(u,ts,df);            % Fourier transform 
  20. U=U/fs;                               % scaling
  21. [C,c,df1]=fftseq(c,ts,df);            % Fourier transform
  22. f=[0:df1:df1*(length(m)-1)]-fs/2;     % freq. vector
  23. signal_power=spower(u(1:length(t)));    % power in modulated signal
  24. noise_power=signal_power/snr_lin;     % compute noise power
  25. noise_std=sqrt(noise_power);          % compute noise standard deviation
  26. noise=noise_std*randn(1,length(u));   % generate noise
  27. r=u+noise;                            % add noise to the modulated signal
  28. [R,r,df1]=fftseq(r,ts,df);            % spectrum of the signal+noise 
  29. R=R/fs;                               % scaling
  30. pause  % Press a key to show the modulated signal power
  31. signal_power
  32. pause  % Press any key to see a plot of the message
  33. clf
  34. subplot(2,2,1)
  35. plot(t,m(1:length(t)))
  36. xlabel('Time')
  37. title('The message signal')
  38. pause  % Press any key to see a plot of the carrier
  39. subplot(2,2,2)
  40. plot(t,c(1:length(t)))
  41. xlabel('Time')
  42. title('The carrier')
  43. pause  % Press any key to see a plot of the modulated signal
  44. subplot(2,2,3)
  45. plot(t,u(1:length(t)))
  46. xlabel('Time')
  47. title('The modulated signal')
  48. pause   % Press any key to see a plots of the magnitude of the message and the
  49. % modulated signal in the frequency domain.
  50. subplot(2,1,1)
  51. plot(f,abs(fftshift(M)))
  52. xlabel('Frequency')
  53. title('Spectrum of the message signal')
  54. subplot(2,1,2)
  55. plot(f,abs(fftshift(U)))
  56. title('Spectrum of the modulated signal')
  57. xlabel('Frequency')
  58. pause  % Press a key to see a noise sample
  59. subplot(2,1,1)
  60. plot(t,noise(1:length(t)))
  61. title('noise sample') 
  62. xlabel('Time')
  63. pause  % Press a key to see the modulated signal and noise 
  64. subplot(2,1,2)
  65. plot(t,r(1:length(t)))
  66. title('Signal and noise')
  67. xlabel('Time')
  68. pause  % Press a key to see the modulated signal and noise in freq. domain
  69. subplot(2,1,1)
  70. plot(f,abs(fftshift(U)))
  71. title('Signal spectrum')
  72. xlabel('Frequency')
  73. subplot(2,1,2)
  74. plot(f,abs(fftshift(R))) 
  75. title('Signal and noise spectrum')
  76. xlabel('Frequency')