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

通讯编程文档

开发平台:

Matlab

  1. % MATLAB script for Illustrative Problem 3.4.
  2. % Demonstration script for LSSB-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. fs=1/ts;                                % sampling frequency
  10. df=0.25;                                % desired freq. resolution
  11. t=[0:ts:t0];                            % time vector
  12. snr_lin=10^(snr/10);                    % SNR
  13. % the message vector
  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 vector
  16. udsb=m.*c;                              % DSB modulated signal
  17. [UDSB,udssb,df1]=fftseq(udsb,ts,df);    % Fourier transform
  18. UDSB=UDSB/fs;                           % scaling
  19. f=[0:df1:df1*(length(udssb)-1)]-fs/2;   % frequency vector
  20. n2=ceil(fc/df1);                        % location of carrier in freq. vector
  21. % Remove the upper sideband from DSB.
  22. UDSB(n2:length(UDSB)-n2)=zeros(size(UDSB(n2:length(UDSB)-n2)));
  23. ULSSB=UDSB;                             % Generate LSSB-AM spectrum.
  24. [M,m,df1]=fftseq(m,ts,df);              % Fourier transform
  25. M=M/fs;                                 % scaling
  26. u=real(ifft(ULSSB))*fs;                 % Generate LSSB signal from spectrum.
  27. signal_power=spower(udsb(1:length(t)))/2;          
  28. %                                       % Compute signal power.
  29. noise_power=signal_power/snr_lin;       % Compute noise power.
  30. noise_std=sqrt(noise_power);            % Compute noise standard deviation.
  31. noise=noise_std*randn(1,length(u));     % Generate noise vector.
  32. r=u+noise;                              % Add the signal to noise.
  33. [R,r,df1]=fftseq(r,ts,df);              % Fourier transform
  34. R=R/fs;                                 % scaling
  35. pause  % Press a key to show the modulated signal power.
  36. signal_power
  37. pause  % Press any key to see a plot of the message signal.
  38. clf
  39. subplot(2,1,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  % Press any key to see a plot of the carrier.
  45. subplot(2,1,2)
  46. plot(t,c(1:length(t))) 
  47. xlabel('Time')
  48. title('The carrier') 
  49. pause  % Press any key to see a plot of the modulated signal and its spectrum.
  50. clf
  51. subplot(2,1,1) 
  52. plot([0:ts:ts*(length(u)-1)/8],u(1:length(u)/8)) 
  53. xlabel('Time')
  54. title('The LSSB-AM modulated signal') 
  55. subplot(2,1,2)
  56. plot(f,abs(fftshift(ULSSB)))
  57. xlabel('Frequency')
  58. title('Spectrum of the LSSB-AM modulated signal')
  59. pause   % Press any key to see the spectra of the message and the modulated signals.
  60. clf 
  61. subplot(2,1,1)
  62. plot(f,abs(fftshift(M)))
  63. xlabel('Frequency')
  64. title('Spectrum of the message signal')
  65. subplot(2,1,2)
  66. plot(f,abs(fftshift(ULSSB)))
  67. xlabel('Frequency')
  68. title('Spectrum of the LSSB-AM modulated signal')
  69. pause  % Press any key to see a noise sample.
  70. subplot(2,1,1)
  71. plot(t,noise(1:length(t)))
  72. title('Noise sample') 
  73. xlabel('Time')
  74. pause  % Press a key to see the modulated signal and noise.
  75. subplot(2,1,2)
  76. plot(t,r(1:length(t)))
  77. title('Modulated signal and noise')
  78. xlabel('Time')
  79. subplot(2,1,1)
  80. pause % Press any key to see the spectrum of the modulated signal.
  81. plot(f,abs(fftshift(ULSSB)))
  82. title('Modulated signal spectrum')
  83. xlabel('Frequency')
  84. subplot(2,1,2)
  85. pause  % Press a key to see the modulated signal noise in freq. domain.
  86. plot(f,abs(fftshift(R))) 
  87. title('Modulated signal noise spectrum')
  88. xlabel('Frequency')