Advertisement
kacHad

Podstawy Telekomunikacji - zaliczenie / opcja2

Jan 24th, 2020
1,548
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 2.46 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(221);
  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;
  41.  
  42.  
  43. subplot(222);
  44. plot(f,mod(1:Nf2));
  45. title('Modul sygnalu');
  46. xlabel('Czestotliwosc [Hz]');
  47. ylabel('Modul');
  48. hold on;
  49.  
  50. subplot(223);
  51. plot(f,faza(1:Nf2));
  52. title('Faza sygnalu');
  53. xlabel('Czestotliwosc [Hz]');
  54. ylabel('Kat');
  55. hold 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. %------------------------------------------------------------------------------%
  72.  
  73. #filtracja i stosunek sygnalu do szumu(SNR) po filtracji
  74. s_f = filter(h,1,sqq);
  75. h_SNR = 20*log10(std(s_f(1:length(s_f)))/std(szum)); #SNR po filtrze
  76. s_fmod = abs(fft(s_f,Nf));
  77. s_ffaza = angle(fft(s_f,Nf));
  78. ausave(['bird7filtrowany.wav'], s_f, fp);
  79.  
  80.  
  81. %Subploty sygnalu po filtracji
  82. subplot(224);
  83. plot(t,s,'-b',s_f,'-g');
  84. title(sprintf("Sygnaly przefiltrowany/SNR po filtracji: %d", h_SNR));
  85.  
  86. subplot(225);
  87. plot(f,s_fmod(1:Nf2));
  88. title('Modul sygnalu po filtracji');
  89.  
  90. subplot(226);
  91. plot(f,s_ffaza(1:Nf2));
  92. title('Faza sygnalu po filtracji');
  93.  
  94. %figure
  95. %freqz(h);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement