Advertisement
krizen

najwazniejsze

Nov 23rd, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.35 KB | None | 0 0
  1. % WCZYTYWANIE SYGNAŁU Z PLIKU
  2. [x1,fp_x1] = audioread('mbi04jeden.wav');
  3. % x1 - zmienna do ktorej przypisujemy sygnał z pliku
  4. % fp_x1 - częstotliwośc próbkowania nagrania z pliku
  5.  
  6.  
  7.                            
  8. % DECYMACJA SYGNAŁU X1 --^
  9. dr = 4;                               % wartość rzędu deycmacji
  10. y1 = decimate(x1, dr);                % decymacja sygnału x1
  11.  
  12. % Po decymacji należy wygenerować oś czasu
  13. N_y1 = length(y1);                    % ilośc próbek sygnału y1
  14. fp_y1 = fp_x1/dr;                     % częstotliwość sygnału y1
  15. t_y1 = 0 : 1/fp_y1 : (N_y1 -1)/fp_y1;   % generacja osi czasu
  16.  
  17. % Rysujemy wykres
  18. subplot(4,2,1);                     % 4wiersze, 2kolumny, wybrana 1 komórka
  19. plot(t_y1, y1);                     % rysowanie wykresu
  20. title('Wykres 1');
  21. ylabel('sygnal po decymacji');
  22. xlabel('czas [s]');
  23.  
  24.  
  25.  
  26. % WIDMO AMPLITUDOWE SYGNAŁU x1/ MODUŁ WIDMA x1
  27. NF_x1 = 2^nextpow2(fp_x1);          % liczba próbek widma
  28. NF2_x1 = NF_x1/2 + 1;               % pozbycie się lustrzanego odbicia
  29. v2 = fft(x1, NF_x1);                % wyznaczenie widma zespolonego
  30. w2 = abs(v2);                       % wyznaczenie widma amplitudowego
  31.  
  32. f_x1 = linspace(0, fp_x1/2, NF2_x1);  % generacja osi czętotliwości
  33.  
  34. % Rysujemy wykres
  35. subplot(4,2,2);                    
  36. plot(f_x1, w2(1:NF2_x1));             % wizulaizacja widma
  37. title('wykres 2');
  38. ylabel('widmo');
  39. xlabel('częstotliwość [Hz]');
  40.  
  41.  
  42.  
  43. % PROJEKTOWANIE FILTRU GÓRNOPRZEPUSTOWEGO
  44. fgr = 1200;                         % częstotliwość graniczna
  45. M = 301;                            % długość odpowiedzi impulsowej
  46. fgn = fgr/(fp_x1/2);                % unormowana częstotliwość graniczna
  47. h = fir1(M-1, fgn, 'high');         % filtr górnoprzepustowy
  48.  
  49. % moduł funkcji transmitancji (czyli podajemy zamiast 'y' po prostu 'h')
  50. v3 = fft(h, NF_x1);
  51. w3 = abs(v3);
  52.  
  53. % rysujemy wykres
  54. subplot(4,2,3);
  55. plot(f_x1, w3(1:NF2_x1));
  56. title('Wykres 3');
  57. ylabel('moduł transmitancji');
  58. xlabel('czestotliwość [Hz]');
  59.  
  60.  
  61.  
  62. % FILTRACJA SYGNAŁU Z UTWORZONEGO FILTRU
  63. y4 = filter (h, 1, x1);          %przefiltrowany sygnał do zmiennej x1f
  64.  
  65. % widmo liczymy tak samo, korzystamy z wcześniejszych NF_x1 oraz NF2_x1
  66.  
  67.  
  68.  
  69. %--------------------------------------------------------------------------
  70. % ZADANIE 5: Sinusoida o zmiennej częstotliwości
  71. %--------------------------------------------------------------------------
  72. fp5 = 150;                            % częstotliwość próbkowania
  73. N5 = 1500;                            % liczba próbek: 10s * 150
  74.  
  75. t5_1 = 0 : 1/fp5 : 2;                 % generowanie osi do 2 sekundy
  76. t5_2 = 2 : 1/fp5 : 4;                 % generowanie osi od 2s do 4s
  77. t5_3 = 4 : 1/fp5 : 8;                 % generowanie osi od 4s do 8s
  78. t5_4 = 8 : 1/fp5 : 10;                % generowanie osi od 8s do 10s
  79.  
  80. f5_1 = 9;                             % czestotliwosc w przedziale 0s-2s
  81. f5_2 = 10;                            % czestotliwosc w przedziale 2s-4s
  82. y5_3 = 1/3*randn(1,601);              % szum o rozkładzie normalnym i A=1
  83. f5_4 = 9;                             % częstotliwość w przedziale 8s-10s
  84.  
  85. y5_1 = sin(t5_1*2*pi*f5_1);           % sinusoida 0s-2s
  86. y5_2 = sin(t5_2*2*pi*f5_2 + pi/4);    % sinusoida 2s-4s;
  87. y5_4 = sin(t5_4*2*pi*f5_4 + pi);      % sinusoida 8s-10s
  88.  
  89. y5 = [y5_1 y5_2 y5_3 y5_4];           % złożenie sygnałów (suma wektorów)
  90. t5 = [t5_1 t5_2 t5_3 t5_4];           % złożenie osi czasu (suma wektorów)
  91.  
  92. %RYSOWANIE WYKRESU
  93. subplot(2,4,5);
  94. plot(t6, y6);
  95. grid on;
  96. title('Wykres 5');
  97. xlabel('czas[s]');
  98. ylabel('sygnał');
  99.  
  100.  
  101. %--------------------------------------------------------------------------
  102. % ZADANIE 6: Sygnał trójkątny
  103. %--------------------------------------------------------------------------
  104. f6 = 6;
  105. t6 = 5;
  106. fp6 = 300;
  107.  
  108. y6 = sawtooth(2*pi*f6*t6);
  109. [r6, u6] = xcorr(y6,y6,3);    % autokorelacja, tau_max = 3
  110. subplot(2,4,6);
  111. plot(u6, r6);
  112. title('Wykres 6');
  113. ylabel('autokorelacja');
  114. xlabel('przesuniecie s');
  115.  
  116.  
  117.  
  118. %--------------------------------------------------------------------------
  119. % ZADANIE 7: KORELACJA SYGNAŁU Z 6 I 5 ZADANIA
  120. %--------------------------------------------------------------------------
  121.  
  122. %KORELACJA
  123. [r7, u7] = xcorr(y6, y5, 2);    % korelacja, tau_max = 2
  124.  
  125. %RYSOWANIE WYKRESU
  126. subplot(2,4,7);
  127. plot(u7, r7);
  128. title('Wykres 7');
  129. ylabel('korelacja');
  130. xlabel('przesuniecie s');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement