Advertisement
RybaSG

Demod_FM

Dec 14th, 2017
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.23 KB | None | 0 0
  1. clear all;
  2. clc;
  3. clf;
  4.  
  5. fm = 1/(0.5e-3);                      % freq of message signal
  6. Am = 10;                         % amplitude
  7.  
  8. fc = 100000;                     % freq of carrier signal
  9. Ac = 10;
  10.  
  11. Fs = 4*fc;                          % sampling freq
  12. n = 1:(Fs/fm)*0.5;
  13.  
  14. signal_a = Am*sin( 2*pi*fm/Fs*n ) - 5;       % signal(1)
  15.  
  16. signal_single = [ signal_a  ];
  17.  
  18. signal = [ signal_single signal_single signal_single signal_single signal_single ];
  19.  
  20. n = 0:length(signal)-1;
  21.  
  22. subplot(411); plot(n, signal);      % message signal
  23.  
  24. %% Modulation
  25. t = n/Fs;
  26. T = 1/Fs;
  27.  
  28. delta_f = 50000;                     % dewiacja cz?stotliwo?ci [Hz]
  29. kf = delta_f / max(signal);
  30. beta = delta_f/fm;
  31.  
  32. calka = cumsum(signal)*T;
  33.  
  34. mod_fm = Ac*cos(2*pi*fc*t + 2*pi*kf*calka);
  35.                
  36. subplot(412); plot(n, mod_fm);
  37.  
  38. %% Demodulation
  39. dem(1)=0;
  40.  
  41. for i = 1:length(mod_fm)-1
  42.     dem(i+1) = mod_fm(i+1) - mod_fm(i);
  43. end
  44.  
  45. f_3dB = 10000 ;
  46. rzad = 3;
  47. [B,A] = butter( rzad , f_3dB/Fs*2);
  48.  
  49. demod_fm = ( ( sign( dem )+1 ) / 2).*dem;
  50. demod = filter(B,A,demod_fm);
  51.  
  52. %% Spectrum
  53.  
  54. spectrum = abs(fft(mod_fm));
  55. subplot(413); plot(n, spectrum,'-x');
  56. subplot(414); plot(n, demod);
  57.  
  58. %audiowrite('audio1.wav', demod, 48000);
  59. %x, Fs = audioread
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement