Advertisement
Guest User

FIR DP

a guest
Jan 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. %skrypt TypI_DP.m
  2. %projektowanie filtru FIR DP o liniowej fazie
  3. %metoda probkowanie w dziedzinie czestotliwosci (i okna)
  4. %Typ 1 - symetryczna odp,. impulsowa; liczba wspolczynnikow N=2M+1
  5. %Typ 1 - czesc urojona funkcji transmitancji IM[H(m)]=0
  6. % w tym przykładzie czestotliwosc graniczna filtru DP, fgr = 0.25*fpr
  7. %%
  8. clear all;clc; clf; subplot(1,1,1)
  9. %N=33;
  10. %N=65;
  11. N=129; %RZAD FILTRU
  12. disp(['Rzad filtru N=', num2str(N)])
  13.  
  14. % tworzenie idealnej f. transmitancji (1-pasmo przepustowe; 0 -p asemo
  15. % zaporowe)
  16.  
  17. M=(N-1)/2; % 0.5 rzedu filtru
  18. M2=M/2; % lub to samo: M2=(Nn-1)/4
  19. j2=ones(1,M2);
  20. z2=zeros(1,M2);
  21. Ar=[1 j2 z2 z2 j2]; % czesc rzeczywista funkcji transmitancji
  22. Ai=zeros(1,N); %czesc urojona funkcji transmitacji (zeruje sygnał)
  23. A=Ar+1j*Ai; % transmitancja idealna (zespolone wartości)
  24. %% - obliczanie IDFT (A) ----> h(n) <--odpowiedz impusowa
  25. n=0:(N-1); % wektor indeksowy odpowiedzi impulsowej h(n)
  26. f=n/N; % wektor wartosci czestotliwosci unormowanej
  27. h=zeros(1,N); % baza sumowania
  28. for k=0:(N-1)
  29. h=h+A(k+1)*exp(1j*2*pi*k/N*(n-M));
  30. end
  31. h = real(h)/N; % normowanie IDFT
  32. okno=hamming(length(h));
  33. h=h.*okno';
  34. subplot(3,2,1)
  35. stem(n-M,h); grid on
  36. hold on
  37. plot(n-(N-1)/2,okno'*max(h),'r')
  38. title(['Odp. impulsowa h(n) filtru FIR. Rzad filtru N=',num2str(N)]);
  39.  
  40. %% =====Rzeczywista funkcja transmitancji H(m) ==============
  41. NF=1000; % liczba probek transmitancji filtru
  42. k=0:NF-1; % wektor indeksowy dla kolejnych wartosci H(m)
  43. fn=k/NF; % wektor wartości czestotliwosci unormowanej
  44. for k=0:NF-1 % DFT z definicji
  45. H(k+1)=exp(-1i*2*pi*k/NF*(n-N))*h';
  46. % to jest iloczyn skalarny wektora wartosci exp() i wektora h'
  47. end
  48. Ax=Ar; %funkcja transmitancji idealna
  49. Hx=real(H); % funkcja transmitancji rzeczywista
  50. subplot(3,2,3)
  51. stem(f,Ax,'or'); grid on
  52. hold on
  53. plot(fn,abs(H),'b')
  54. title('Charakterystyka filtru');
  55. legend('idealna','faktyczna')
  56. subplot(3,2,5)
  57. plot(fn,20*log10(abs(H)));grid on
  58. title('|H(m)| w [db]')
  59. %%
  60. %%=====tworzenie sygnalu testowego i jego charakterystyki
  61. fs=1000; %czestotliwosc probkowania [Hz]
  62. deltaT=1/fs; %okres probkowania
  63. t=0:deltaT:1-deltaT; %wektor chwili czasu probkowania (od 0 do 1 sekundy)
  64. f1=100; f2=350; % czestotliwosc sinusoid
  65. s1=sin(2*pi*f1*t); % 1. sinusoida
  66. s2=sin(2*pi*f2*t); % 2. sinusoida
  67. syg=s1+s2; % sygnal tesotwy (2 sinsoidy)
  68. syg=syg+2*randn(1,length(syg)); % sygnal testowy z szumem
  69. %%
  70. % ykres
  71. subplot(3,2,2)
  72. plot(t,syg); grid on; xlabel('czas[s]')
  73. title('Sygnal testowy')
  74. F=fft(syg); %dft Syg
  75. Fsyg=abs(F); %moduł z syg czyli widmo amplitudowe
  76. subplot(3,2,4)
  77. plot(Fsyg); grid on; title('Widmo amplitudowe sygnału testowego')
  78. %%
  79. % splot
  80. % czyli filtracja sygnału
  81. y=conv(syg,h);
  82. FF=abs(fft(y));
  83. subplot(3,2,6)
  84. plot(FF); grid on; title('Widmo aplitudowe po filtracji')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement