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

通讯编程文档

开发平台:

Matlab

  1. % MATLAB script for Illustrative Problem 3.1.
  2. % Demonstration script for DSB-AM. The message signal is 
  3. % +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 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')