Advertisement
Guest User

Untitled

a guest
Jan 29th, 2015
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. function [ x , xx] = FFTDIT( x )
  2. N = length(x);
  3. xc = x;
  4. LiczbaBitow=log2(N); % liczba bitów numerów próbek %
  5. for n=0:N-1; % kolejne próbki %
  6. ncopy=n; % stary numer próbki (kopia) %
  7. nr=0; % nowy numer próbki (inicjalizacja) %
  8. for m=1:LiczbaBitow % po wszystkich bitach %
  9. if (rem(n,2)==0) % czy jedynka na LSB- mlodszej pozycji %
  10. n=n/2; % jeśli nie, przesuń w prawo %
  11. else
  12. nr=nr+2^(LiczbaBitow-m); % dodaj 2^(LiczbaBitow-m) %
  13. n=(n-1)/2; % odejmij jedynkę, przesuń w prawo %
  14. end
  15. end
  16. y(nr+1)=x(ncopy+1); % skopiuj we właściwe miejsce %
  17. end
  18. x = y;
  19.  
  20. for e = 1 : log2(N) % KOLEJNE ETAPY
  21. SzerokoscMotylka = 2^(e-1); % szerokość motylka
  22. LiczbaBlokow = N/(2^e); % liczba bloków
  23. MlodszyBit = 2^(e-1); % liczba motylków w bloku
  24. OdlegloscMiedzyBlokami = 2^e; % odległość między blokami
  25. W = exp(-1i*2*pi/2^e); % podstawa bazy Fouriera
  26. for b = 1 : LiczbaBlokow % KOLEJNE BLOKI
  27. for m = 1 : MlodszyBit % KOLEJNE MOTYLKI
  28. g = (b-1)*OdlegloscMiedzyBlokami + m; % indeks górnej próbki motylka
  29. d = g + SzerokoscMotylka; % indeks dolnej próbki motylka
  30. xgora = x(g); % skopiowanie górnej próbki
  31. xdol = x(d)*W^(m-1); % korekta dolnej próbki
  32. x(g) = xgora + xdol; % nowa górna próbka: górna plus dolna po korekcie
  33. x(d) = xgora - xdol; % nowa dolna próbka: górna minus dolna po korekcie
  34. end % koniec pętli
  35. end % koniec pętli bloków
  36. end % koniec pętli etapów
  37.  
  38. n = N/2; %przyciecie wektora
  39. i = 1; %zeby uniknac powtarzania widma
  40. while i <= n
  41. xx(i) = x(i);
  42. i = i + 1;
  43. end
  44.  
  45. plot(abs(xx));
  46. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement