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

通讯编程文档

开发平台:

Matlab

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