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

通讯编程文档

开发平台:

Matlab

  1. % MATLAB script for Illustrative Problem 3.3.
  2. % 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=10;                                 % SNR in dB (logarithmic)
  9. a=0.85;                                 % modulation index
  10. fs=1/ts;                                % sampling frequency
  11. t=[0:ts:t0];                            % time vector
  12. df=0.2;                                 % required frequency resolution
  13. snr_lin=10^(snr/10);                    % SNR
  14. % message signal
  15. m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];
  16. c=cos(2*pi*fc.*t);                      % carrier signal
  17. m_n=m/max(abs(m));                      % normalized message signal
  18. [M,m,df1]=fftseq(m,ts,df);              % Fourier transform 
  19. M=M/fs;                                 % scaling
  20. f=[0:df1:df1*(length(m)-1)]-fs/2;       % frequency vector
  21. u=(1+a*m_n).*c;                         % modulated signal
  22. [U,u,df1]=fftseq(u,ts,df);              % Fourier transform 
  23. U=U/fs;                                 % scaling
  24. signal_power=spower(u(1:length(t)));    % power in modulated signal
  25. % power in normalized message
  26. pmn=spower(m(1:length(t)))/(max(abs(m)))^2;
  27. eta=(a^2*pmn)/(1+a^2*pmn);              % modulation efficiency
  28. noise_power=eta*signal_power/snr_lin;   % noise power
  29. noise_std=sqrt(noise_power);            % noise standard deviation
  30. noise=noise_std*randn(1,length(u));     % Generate noise.
  31. r=u+noise;                              % Add noise to the modulated signal
  32. [R,r,df1]=fftseq(r,ts,df);              % Fourier transform.
  33. R=R/fs;                                 % scaling
  34. pause  % Press a key to show the modulated signal power.
  35. signal_power
  36. pause  % Press a key to show the modulation efficiency.
  37. eta
  38. pause  % Press any key to see a plot of the message.
  39. subplot(2,2,1)
  40. plot(t,m(1:length(t)))
  41. axis([0 0.15 -2.1 2.1])
  42. xlabel('Time')
  43. title('The message signal')
  44. pause
  45. pause  % Press any key to see a plot of the carrier.
  46. subplot(2,2,2)
  47. plot(t,c(1:length(t)))
  48. axis([0 0.15 -2.1 2.1])
  49. xlabel('Time')
  50. title('The carrier') 
  51. pause  % Press any key to see a plot of the modulated signal.
  52. subplot(2,2,3)
  53. plot(t,u(1:length(t)))
  54. axis([0 0.15 -2.1 2.1])
  55. xlabel('Time')
  56. title('The modulated signal')
  57. pause   % Press any key to see plots of the magnitude of the message and the
  58.     % modulated signal in the frequency domain.
  59. subplot(2,1,1)
  60. plot(f,abs(fftshift(M))) 
  61. xlabel('Frequency')
  62. title('Spectrum of the message signal')
  63. subplot(2,1,2)
  64. plot(f,abs(fftshift(U))) 
  65. title('Spectrum of the modulated signal')
  66. xlabel('Frequency')
  67. pause  % Press a key to see a noise sample.
  68. subplot(2,1,1)
  69. plot(t,noise(1:length(t))) 
  70. title('Noise sample') 
  71. xlabel('Time')
  72. pause  % Press a key to see the modulated signal and noise.
  73. subplot(2,1,2)
  74. plot(t,r(1:length(t))) 
  75. title('Signal and noise')
  76. xlabel('Time')
  77. pause  % Press a key to see the modulated signal and noise in freq. domain.
  78. subplot(2,1,1)
  79. plot(f,abs(fftshift(U))) 
  80. title('Signal spectrum')
  81. xlabel('Frequency')
  82. subplot(2,1,2)
  83. plot(f,abs(fftshift(R))) 
  84. title('Signal and noise spectrum')
  85. xlabel('Frequency')