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

通讯编程文档

开发平台:

Matlab

  1. % lssb.m
  2. % Matlab 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')