Advertisement
lukifrancuz

Lab10

Dec 12th, 2021 (edited)
1,240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 5.36 KB | None | 0 0
  1. clc
  2. clear
  3. xdel(winsid())
  4.  
  5. fs=32;//częstotliwość próbkowania
  6. T=1/fs; //wielkość przedziałów dyskretnych podczas 1 sek. N=100;//ilość próbek N = 1 sek.
  7. N=32; // ilość próbek N=1 sek
  8. n=0:N-1; //wektor próbek
  9. t=[];//n*T;
  10. xn=[];
  11. //xn=sin(2*%pi*2.5*t)+0.5*cos(2*%pi*7*t)//wartości próbkowane x(n) sygnału
  12.  
  13. plot(t,xn)
  14. title('Wykres sygnału')
  15. xlabel('Czas [s]')
  16. ylabel('Amplituda')
  17.  
  18. Xn=fft(xn);//transformata sygnału dyskretnego x(n) o częst. 5 Hz
  19. half=round(length(n)/2);// analiza połowy widma (ponieważ dla sygnału okresowego transformata Fouriera jest symetryczna !)
  20. n1=n(1:half);// nowy wektor dziedziny
  21. Xn1=Xn(1:half); // nowy wektor wartości
  22. scf()
  23. subplot(1,2,1)
  24. plot2d3(n1,abs(Xn1))
  25. title('Dyskretne widmo amplitudowe')
  26. xlabel('Częstotliwość [Hz]')
  27. ylabel('Widmo amplitudowe')
  28.  
  29. subplot(1,2,2)
  30. zp=2*N;//wielokrotność próbek (może być dowolna wartość, min. 2 x większa od N, np.100)
  31. x_zpad = [xn zeros(1,zp-N)] ; //dopełnienie zerami - tzw. zero pad
  32. X_zpad_mags = abs(fft(x_zpad));
  33. nn=0:length(x_zpad)-1;//wybieramy istotną dla nas dziedzinę FFT
  34. d=zp/N;//dzielnik wykorzystany do normalizacji osi x
  35. plot(nn(1:zp/2)/d,X_zpad_mags(1:zp/2));// dzielimy przez 2 bo wybieramy połowę wykresu (można wybrać mniejszy zakres aby wyświetlić istotne dane)
  36. title('Widmo amplitudowe z dopełnieniem zerami')
  37. xlabel('Częstotliwość [Hz]')
  38. ylabel('Widmo amplitudowe X(n)')
  39.  
  40.  
  41. //wprowadzamy model okna Hamminga wraz z dopełnieniem zerami
  42. hm=[0.53836-0.46164*cos(2*%pi*n/(N-1)) zeros(1,zp-N)];
  43. X_zpad_mags_hm = abs(fft(x_zpad.*hm));
  44. bins=0:length(x_zpad)-1;
  45. scf()
  46. plot(bins(1:zp/2)/d,X_zpad_mags_hm(1:zp/2))
  47. title('Zastosowanie okna Hamminga')
  48. xlabel('Częstotliwość [Hz]')
  49. ylabel('Widmo amplitudowe X(n)')
  50.  
  51. //wprowadzamy model okna Hanninga wraz z dopełnieniem zerami
  52. hn=[0.5*(1-cos(2*%pi*n/(N-1))) zeros(1,zp-N)];
  53. X_zpad_mags_hn = abs(fft(x_zpad.*hn));
  54. bins=0:length(x_zpad)-1;
  55. scf()
  56. plot(bins(1:zp/2)/d,X_zpad_mags_hn(1:zp/2))
  57. title('Zastosowanie okna Hanna')
  58. xlabel('Częstotliwość [Hz]')
  59. ylabel('Widmo amplitudowe X(n)')
  60.  
  61.  
  62.  
  63. //wprowadzamy model okna Bartletta wraz z dopełnieniem zerami
  64. ba=[1-abs((n-((N-1)/((N-1)/2)))/(2)) zeros(1,zp-N)];
  65. X_zpad_mags_ba = abs(fft(x_zpad.*ba));
  66. bins=0:length(x_zpad)-1;
  67. scf()
  68. plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
  69. title('Zastosowanie okna Bartletta')
  70. xlabel('Częstotliwość [Hz]')
  71. ylabel('Widmo amplitudowe X(n)')
  72.  
  73.  
  74.  
  75. //wprowadzamy model okna trójkątnego wraz z dopełnieniem zerami
  76. ba=[1-abs((n-((N-1)/2))/(N/2)) zeros(1,zp-N)];
  77. X_zpad_mags_ba = abs(fft(x_zpad.*ba));
  78. bins=0:length(x_zpad)-1;
  79. scf()
  80. plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
  81. title('Zastosowanie okna trójkątnego')
  82. xlabel('Częstotliwość [Hz]')
  83. ylabel('Widmo amplitudowe X(n)')
  84.  
  85.  
  86.  
  87. //wprowadzamy model okna Bartletta-Hanna wraz z dopełnieniem zerami
  88. ba=[0.62-0.48*abs((n/(N-1))-0.5)-0.38*cos((2*%pi*n)/(N-1)) zeros(1,zp-N)];
  89. X_zpad_mags_ba = abs(fft(x_zpad.*ba));
  90. bins=0:length(x_zpad)-1;
  91. scf()
  92. plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
  93. title('Zastosowanie okna Bartletta-Hanna')
  94. xlabel('Częstotliwość [Hz]')
  95. ylabel('Widmo amplitudowe X(n)')
  96.  
  97.  
  98.  
  99. //wprowadzamy model okna Blackmana wraz z dopełnieniem zerami
  100. a0=0.42;
  101. a1=0.5;
  102. a2=0.08;
  103. ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1)) zeros(1,zp-N)];
  104. X_zpad_mags_ba = abs(fft(x_zpad.*ba));
  105. bins=0:length(x_zpad)-1;
  106. scf()
  107. plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
  108. title('Zastosowanie okna Blackmana')
  109. xlabel('Częstotliwość [Hz]')
  110. ylabel('Widmo amplitudowe X(n)')
  111.  
  112.  
  113.  
  114. //wprowadzamy model okna Nuttalla wraz z dopełnieniem zerami
  115. a0=0.355768;
  116. a1=0.487396;
  117. a2=0.144232;
  118. a3=0.012604;
  119. ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1))-a3*cos((6*%pi*n)/(N-1)) zeros(1,zp-N)];
  120. X_zpad_mags_ba = abs(fft(x_zpad.*ba));
  121. bins=0:length(x_zpad)-1;
  122. scf()
  123. plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
  124. title('Zastosowanie okna Nuttalla')
  125. xlabel('Częstotliwość [Hz]')
  126. ylabel('Widmo amplitudowe X(n)')
  127.  
  128.  
  129.  
  130. //wprowadzamy model okna Blackmana-Harrisa wraz z dopełnieniem zerami
  131. a0=0.35875;
  132. a1=0.48829;
  133. a2=0.14128;
  134. a3=0.01168;
  135. ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1))-a3*cos((6*%pi*n)/(N-1)) zeros(1,zp-N)];
  136. X_zpad_mags_ba = abs(fft(x_zpad.*ba));
  137. bins=0:length(x_zpad)-1;
  138. scf()
  139. plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
  140. title('Zastosowanie okna Blackmana-Harrisa')
  141. xlabel('Częstotliwość [Hz]')
  142. ylabel('Widmo amplitudowe X(n)')
  143.  
  144.  
  145.  
  146. //wprowadzamy model okna Blackmana-Nuttalla wraz z dopełnieniem zerami
  147. a0=0.3635819;
  148. a1=0.4891775;
  149. a2=0.1365995;
  150. a3=0.0106411;
  151. ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1))-a3*cos((6*%pi*n)/(N-1)) zeros(1,zp-N)];
  152. X_zpad_mags_ba = abs(fft(x_zpad.*ba));
  153. bins=0:length(x_zpad)-1;
  154. scf()
  155. plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
  156. title('Zastosowanie okna Blackmana-Nuttalla')
  157. xlabel('Częstotliwość [Hz]')
  158. ylabel('Widmo amplitudowe X(n)')
  159.  
  160.  
  161.  
  162. //wprowadzamy model okna Flat top wraz z dopełnieniem zerami
  163. a0=1.0;
  164. a1=1.93;
  165. a2=1.29;
  166. a3=0.388;
  167. a4=0.028;
  168. ba=[a0-a1*cos((2*%pi*n)/(N-1))+a2*cos((4*%pi*n)/(N-1))-a3*cos((6*%pi*n)/(N-1))+a4*cos((8*%pi*n)/(N-1)) zeros(1,zp-N)];
  169. X_zpad_mags_ba = abs(fft(x_zpad.*ba));
  170. bins=0:length(x_zpad)-1;
  171. scf()
  172. plot(bins(1:zp/2)/d,X_zpad_mags_ba(1:zp/2))
  173. title('Zastosowanie okna Flat top')
  174. xlabel('Częstotliwość [Hz]')
  175. ylabel('Widmo amplitudowe X(n)')
  176.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement