Advertisement
krizen

rozwiazanie_kolokwium

Nov 22nd, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 5.93 KB | None | 0 0
  1. %--------------------------------------------------------------------------
  2. %                     wczytanie sygnału x z pliku
  3. %--------------------------------------------------------------------------
  4.  
  5. [x,fpx]=audioread('mbi04dziur.wav');
  6.  
  7. Nx=length(x); % wyznaczenie ilości próbek sygnału x
  8. t1=0: 1/fpx: (Nx-1)/fpx; % generowanie osi czasu
  9.  
  10. %--------------------------------------------------------------------------
  11. %                            widmo sygnału x
  12. %--------------------------------------------------------------------------
  13.  
  14. Nf1=2^nextpow2(Nx); % liczba próbek widma, pierwsza potęga dwójki po wartości Nx (liczbie próbek sygnału x)
  15. N1=Nf1/2+1;  % pozbycie się lustrzanego odbicia wykresu
  16. v1=fft(x,Nf1); % wyznaczenie widma zespolonego
  17. w1=abs(v1); % wyznaczenie widma amplitudowego
  18. f1=linspace(0,fpx/2,N1); % generowanie osi częstotliwości
  19.  
  20. %--------------------------------------------------------------------------
  21. %                          decymacja sygnału x
  22. %--------------------------------------------------------------------------
  23.  
  24. dr=3; % wartość rzędu decymacji
  25. y=decimate(x,dr); % decymacja sygnału y
  26. fpy=fpx/dr; % częstotliwość sygnału y
  27. Ny=length(y); % ilość próbek sygnału y
  28. t2=0:1/fpy: (Ny-1)/fpy; % generowanie osi czasu
  29.  
  30. subplot (4,2,1);
  31. plot (t2,y);
  32. title('Wykres 1')
  33. xlabel('czas')
  34. ylabel('sygnał')
  35.  
  36. %--------------------------------------------------------------------------
  37. %                     widmo zdecymowanego sygnału x
  38. %--------------------------------------------------------------------------
  39.  
  40. Nf2=2^nextpow2(Ny); % liczba próbek widma, pierwsza potęga dwójki po wartości Ny (liczbie próbek sygnału y)
  41. N2=Nf2/2+1; % pozbycie się lustrzanego odbicia wykresu
  42. v2=fft(y,Nf2); % wyznaczenie widma zespolonego
  43. w2=abs(v2); % wyznaczenie widma amplitudowego
  44. f2=linspace(0,fpy/2,N2); % generowanie osi częstotliwości
  45.  
  46. subplot (4,2,2);
  47. plot (f2,w2(1:N2)); % wizualizacja widma
  48. title ('Wykres 2')
  49. xlabel('częstotliwość')
  50. ylabel ('widmo')
  51.  
  52.  
  53. %--------------------------------------------------------------------------
  54. %                       filtr dolnoprzepustowy
  55. %--------------------------------------------------------------------------
  56.  
  57. M=201; % długość odpowiedzi impulsowej filtra
  58. fpf = 800; % częstotliwość graniczna (odcięcia)
  59. fpf1=(fpf/fpy)*2; % unormowanie częstotliwości granicznej
  60. h=fir1(M-1,fpf1, 'low'); % filtr dolnoprzepustowy
  61. th=0: 1/fpy : (M-1)/fpy; % generowanie osi czasu
  62.  
  63. %--------------------------------------------------------------------------
  64. %                       widmo funkcji transmitancji
  65. %--------------------------------------------------------------------------
  66.  
  67. vh=fft(h, Nf2); % wyznaczenie widma zespolonego
  68. wh=abs(vh); % wyznaczenie widma amplitudowego
  69.  
  70. subplot (4,2,3);
  71. plot (f2, wh(1:N2));
  72. title ('Wykres 3')
  73. xlabel('częstotliwość')
  74. ylabel ('widmo')
  75.  
  76. %--------------------------------------------------------------------------
  77. %             filtracja sygnału y przez stworzony wcześniej filtr
  78. %--------------------------------------------------------------------------
  79.  
  80. yf = filter(h, 1, y); % zapisanie przefiltrowanego sygnału do zmiennej yf
  81.  
  82. %--------------------------------------------------------------------------
  83. %                      widmo sygnału po filtracji
  84. %--------------------------------------------------------------------------
  85.  
  86. v3=fft(yf, Nf2); % wyznaczenie widma zespolonego
  87. w3=abs(v3); % wyznaczenie widma amplitudowego
  88.  
  89. subplot (4,2,4);
  90. plot (f2, w3(1:N2)) % wizualizacja widma
  91. title ('Wykres 4')
  92. xlabel('częstotliwość')
  93. ylabel ('widmo')
  94.  
  95. %--------------------------------------------------------------------------
  96. %                      sygnał złożony z sinusów i szumu
  97. %--------------------------------------------------------------------------
  98.  
  99. fp13=150; % częstotliwość próbkowania
  100. n13=1500; % liczba próbek
  101.  
  102. t131=0:1/fp13:2; % generowanie osi czasu
  103. t132=2:1/fp13:4; % generowanie osi czasu
  104. t133=4:1/fp13:8; % generowanie osi czasu
  105. t134=8:1/fp13:10; % generowanie osi czasu
  106.  
  107. f131=2; % nadanie zmiennej wartości 2Hz
  108. f132=6;  % nadanie zmiennej wartości 6Hz
  109. y133=1/3*randn(1,601); % szum o rozkładzie normalnym i amplitudzie jeden
  110. f134=2;  % nadanie zmiennej wartości 2Hz
  111.  
  112. y131=sin(2*pi*f131*t131); % generowanie sinusoidy
  113. y132=sin(2*pi*f132*t132+pi/4); % generowanie sinusoidy z fazą 45*
  114. y134=sin(2*pi*f134*t134+pi/2); % generowanie sinusoidy z fazą 90*
  115.  
  116. y13=[y131 y132 y133 y134]; % złożenie sygnałów (suma wektorów)
  117. t13=[t131 t132 t133 t134]; % złożenie osi czasu (suma wektorów)
  118.  
  119. subplot (4,2,5);
  120. plot (t13,y13);
  121. title ('Wykres 5')
  122. xlabel ('czas')
  123. ylabel('sygnał')
  124.  
  125. %--------------------------------------------------------------------------
  126. %                      autokorelacja sygnału
  127. %--------------------------------------------------------------------------
  128.  
  129. tau_max=400; % przesunięcie- liczba próbek o jaką ma być przesunięty sygnał
  130. [r14,t14] = xcorr(y13, y13, tau_max, 'biased'); % obliczanie autokorelacji i automatyczne wygenerowanie odpowiedniej osi
  131. subplot (4,2,6);
  132.  
  133. plot (t14,r14);
  134. title ('Wykres 6')
  135. xlabel('przesunięcie')
  136. ylabel('współczynnik korelacji')
  137.  
  138. %--------------------------------------------------------------------------
  139. %                       sygnał sinusoidalny
  140. %--------------------------------------------------------------------------
  141.  
  142. f15=2; % nadanie zmiennej wartości 2Hz
  143. y15=sin(2*pi*f15*t13); % generowanie sygnału sinusoidalnego
  144. %subplot (428);
  145. %plot (t13,y15);
  146.  
  147. %--------------------------------------------------------------------------
  148. %           korelacja sygnału sinusoidalnego i sygnału z wykresu 5                  
  149. %--------------------------------------------------------------------------
  150.  
  151. [r15,t15]=xcorr(y13,y15, 'biased');
  152. subplot (4,2,7);
  153. plot (t15,r15)
  154. title ('Wykres 7')
  155. xlabel('przesunięcie')
  156. ylabel('współczynnik korelacji')
  157.  
  158. sound (x, 1.3*fpx);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement