Advertisement
milanmetal

[DS] Primer / Rasipanje spektra

Apr 14th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.66 KB | None | 0 0
  1. %Broj tacaka u kojima se racuna DFT
  2. N=128;
  3. n=0:N-1;
  4. %Definicija signala ciji spektar racunamo
  5. x1=10000*cos(2*pi*10*n/N)+100*cos(2*pi*16*n/N);
  6. %Odredjivanje amplitudske karakteristike
  7. X1=2*abs(fft(x1))/N;
  8. %Izracunavanje karakteristike u dB
  9. X1=20*log10(X1);
  10. %Crtanje karakteristike
  11. subplot (2, 2, 1), stem(n, X1);
  12. title('Spektar signala x_1(n)');
  13. %Umesto da crtamo 64 odbirka crtacemo samo prvih 32 radi bolje
  14. %ilustracije
  15. axis([0 32 0 80]);
  16.  
  17.  
  18. % Obzirom da obe komponente prisutne u signalu padaju tačno u tačke u kojima
  19. % računamo DFT, u ovom slučaju ne dolazi do curenja spektra, tako da u
  20. % spektru vidimo samo dve komponente na pozicijama 10 i 16.
  21. % Sada ćemo promeniti učestanost prve komponente tako da pada tačno između
  22. % dve tačke u kojima računamo DFT. Ovo je inače najgori mogući slučaj za
  23. % analizu curenja spektra. U ovom slučaju će doći do curenja spektra prve
  24. % komponente koje će potencijalno maskirati drugu komponentu koja je sto
  25. % puta slabija od prve. U ovoj situaciji ćemo primeniti prozoriranje sa
  26. % različitim prozorskim funkcijama da bi smo umanjili negativne efekte
  27. % spektralnog curenja. Sledeći MATLAB program definiše modifikovani signal
  28. % x(n), a zatim određuje DFT ovog signala nakon prozoriranja
  29. % različitim prozorskim funkcijama.
  30.  
  31. %Modifikacija signala x1(n) tako da se ucestanost prve komponente nalazi
  32. %izmedju dve tacke u kojima racunamo DFT
  33. x2=10000*cos(2*pi*10.5*n/N)+100*cos(2*pi*16*n/N);
  34.  
  35. %Odredjivanje amplitudske karakteristike, pravougaoni prozor
  36. X2=2*abs(fft(x2))/N;
  37. X2=20*log10(X2);
  38. subplot (2, 2, 2), stem(n, X2);
  39. title('Spektar signala x_2(n)');
  40. axis([0 32 0 80]);
  41.  
  42. %Trougaoni prozor
  43. w=triang(N)';
  44. x3=x2.*w;
  45. X3=2*abs(fft(x3))/N;
  46. X3=20*log10(X3);
  47. subplot (2, 2, 3), stem(n, X3);
  48. title('Trougaoni prozor');
  49. axis([0 32 0 80]);
  50.  
  51. %Hanov prozor
  52. w=hanning(N)';
  53. x4=x2.*w;
  54. X4=2*abs(fft(x4))/N;
  55. X4=20*log10(X4);
  56. subplot (2, 2, 4), stem(n, X4);
  57. title('Hanov prozor');
  58. axis([0 32 0 80]);
  59. figure
  60.  
  61. %Hemingov prozor
  62. w=hamming(N)';
  63. x5=x2.*w;
  64. X5=2*abs(fft(x5))/N;
  65. X5=20*log10(X5);
  66. subplot (2, 2, 1), stem(n, X5);
  67. title('Hemingov prozor');
  68. axis([0 32 0 80]);
  69.  
  70. %Blekmenov prozor
  71. w=blackman(N)';
  72. x6=x2.*w;
  73. X6=2*abs(fft(x6))/N;
  74. X6=20*log10(X6);
  75. subplot (2, 2, 2), stem(n, X6);
  76. title('Blekmenov prozor');
  77. axis([0 32 0 80]);
  78.  
  79. %Kajzerov prozor, beta = 4
  80. w=kaiser(N,4)';
  81. x7=x2.*w;
  82. X7=2*abs(fft(x7))/N;
  83. X7=20*log10(X7);
  84. subplot (2, 2, 3), stem(n, X7);
  85. title('Kajzerov prozor \beta=4');
  86. axis([0 32 0 80]);
  87.  
  88. %Kajzerov prozor, beta = 9
  89. w=kaiser(N,9)';
  90. x8=x2.*w;
  91. X8=2*abs(fft(x8))/N;
  92. X8=20*log10(X8);
  93. subplot (2, 2, 4), stem(n, X8);
  94. title('Kajzerov prozor \beta=9');
  95. axis([0 32 0 80]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement