Algoritmus I-DFT pre delphi

Marek Peca marek@tynska.cuni.cz
Pondělí Květen 30 12:21:29 CEST 2005


> myslim ze to bolo napisane dost jasne, inverzna diskretna fourierova 
> transformacia. Keby som chcel 2^n tak napisem FFT a keby som chcel 
> konkretny pocet bodov tak to tiez napisem :-) V tomto pripade je to 
> uplne vseobecne :-)

FFT taky existuje pro libovolny pocet bodu (ovsem pro prvociselny se
uz nerozpada na rekurze, pokud si to dobre pamatuju).

> Ono to zase nie je az tak jednoduche (2 for cykly)

Proc by nebylo? Je:

(v matlabu i s overenim, napsano za 7 minut)

N=length(x);
s=[];
for k=1:N,
    s(k)=0;
    for t=1:N,
        s(k)=s(k)+exp(j*(k-1)*2*pi*(t-1)/N)*x(t);
    end
    s(k)=s(k)/N;
end

Takze v Delfach, jak by to mohlo bejt...? Pozuivas nejakou komplexni
tridu? Kdyby ne, tak asi

{ vstup x_re,x_im[0..N-1] }

for k := 0 to N-1 do
 begin
  y_re[k] := 0.0; y_im[k] := 0.0;
  for t := 0 to N-1 do
   begin
    u := k*2*pi*t/N;
    y_re[k] := y_re[k] + cos(u)*x_re[t] - sin(u)*x_im[t];
    x_re[k] := y_re[k] + cos(u)*x_im[t] + sin(u)*y_re[t];
   end
 end

{ vystup v y_re,y_im[k], k=0..N-1, priemz zaporne frekvence lezi
  v horni pulce pole (zkratka vraci to stejne jako matlabovska ifft }

ZdraviM.P.

> >libovolnou DFT? 2 for-cykly s nasobenim sinem a cosinem snad
> >zvladnes, ne?? :-DDD




Další informace o konferenci Hw-list