Advertisement
kacHad

Podstawy Telekomunikacji - zaliczenie

Jan 24th, 2020
1,428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 2.83 KB | None | 0 0
  1. %------PROJEKT ZALICZENIOWY-----%
  2. % 1.Wygenerowac Sygnal.
  3. % 2.Poddac go kwantowaniu, postarac sie wykorzystac jak najmniej bitow przetwornika przy jak najmniejszym szumie.
  4. % 3.Powyzszy sygnal przepuscic przez filtr.
  5. % 4.Stworzyc wykresy przed filtracja/kwantowaniem i po...
  6. clear all;
  7. close all;
  8. clf;
  9. pkg load signal;
  10.  
  11. %Sygnal wejsciowy
  12. [s,fp]=auload('bird7.wav');                                 % s-wektor / fp- wartosc czestotliwosci probkowania
  13. t= 1:length(s);                    
  14. amp=10.0;
  15. s(1:length(s))=amp*s(1:length(s));
  16. Nf=2^12;                       
  17. Nf2=Nf/2+1;                      
  18. sig_fft=fft(s,Nf);                  %Transforamta Fouriera
  19. mod=abs(sig_fft);              
  20. faza=angle(sig_fft);               
  21. f=linspace(0, fp/2, Nf2);      
  22.  
  23. %kwantowanie
  24. b=4;                             %ilosc bitow                          
  25. a = 2^b - 1;                   
  26. sq = round(s(1:rows(s))*a)/a;  
  27. szum = s(1:rows(s)) - sq;
  28. sqq=round(s*a)/a;
  29. ausave(['bird7kwantowany.wav'], sqq, fp);
  30.  
  31. %Stosunek sygalu do szumu (SNR)
  32. SNR=20*log10(std(s(1:length(sqq)))/std(szum));
  33.  
  34. %Subploty sygnalu
  35. subplot(331);
  36. plot(t,sq,'-b',t,szum,'-r');
  37. title(sprintf("Ilosc bitow: %d / SNR: %d" ,b,SNR));
  38. xlabel('Czas [s]');
  39. ylabel('Amplituda [A]');
  40. hold on; grid on;
  41.  
  42.  
  43. subplot(332);
  44. plot(f,mod(1:Nf2));
  45. title('Modul sygnalu');
  46. xlabel('Czestotliwosc [Hz]');
  47. ylabel('Modul');
  48. hold on; grid on;
  49.  
  50. subplot(333);
  51. plot(f,faza(1:Nf2));
  52. title('Faza sygnalu');
  53. xlabel('Czestotliwosc [Hz]');
  54. ylabel('Kat');
  55. hold on; grid on;
  56.  
  57. %------------------------------------------------------------------------------%
  58.  
  59. %Filtr GORNOPRZEPUSTOWY
  60. M = 128;                               %ilosc wspolczynnikow filtra
  61. f1 = .123;
  62. f2 = .452;
  63. h = fir1(M-1,[f1 f2],'high');
  64. th = 0:1/fp:(M-1)/fp;
  65.  
  66. #transmitancja
  67. h_fft = fft(h,Nf);
  68. h_mod = abs(h_fft);
  69. h_faza = angle(h_fft);
  70.  
  71. %Subploty filtra
  72. subplot(334);
  73. plot(h);
  74. title('Filtr');
  75. hold on; grid on;
  76.  
  77. subplot(335);
  78. plot(f,h_mod(1:Nf2));
  79. title('Modul filtra');
  80. xlabel('Czestotliwosc [Hz]');
  81. ylabel('Modul');
  82. hold on; grid on;
  83.  
  84. subplot(336);
  85. plot(f,h_faza(1:Nf2));
  86. title('Faza filtra');
  87. xlabel('Czestotliwosc [Hz]');
  88. ylabel('Kat');
  89. hold on; grid on;
  90.  
  91. %------------------------------------------------------------------------------%
  92.  
  93. #filtracja i stosunek sygnalu do szumu(SNR) po filtracji
  94. s_f = filter(h,1,sqq);
  95. h_SNR = 20*log10(std(s_f(1:length(s_f)))/std(szum)); #SNR po filtrze
  96. s_fmod = abs(fft(s_f,Nf));
  97. s_ffaza = angle(fft(s_f,Nf));
  98. ausave(['bird7filtrowany.wav'], s_f, fp);
  99.  
  100.  
  101. %Subploty sygnalu po filtracji
  102. subplot(337);
  103. plot(t,s,'-b',s_f,'-g');
  104. title(sprintf("Sygnaly przefiltrowany/SNR po filtracji: %d", h_SNR));
  105.  
  106. subplot(338);
  107. plot(f,s_fmod(1:Nf2));
  108. title('Modul sygnalu po filtracji');
  109.  
  110. subplot(339);
  111. plot(f,s_ffaza(1:Nf2));
  112. title('Faza sygnalu po filtracji');
  113.  
  114. %figure
  115. %freqz(h);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement