Составители:
a(i-1) = tempr;
a(i) = tempi;
}
m = n/2;
while(m>=2&&j>m)
{
j = j-m;
m = m/2;
}
j = j+m;
}
mmax = 2;
while(n>mmax)
{
istep = 2*mmax;
theta = 2*ap::pi()/(isign*mmax);
wpr = -2.0*ap::sqr(sin(0.5*theta));
wpi = sin(theta);
wr = 1.0;
wi = 0.0;
for(ii = 1; ii <= mmax/2; ii++)
{
m = 2*ii-1;
for(jj = 0; jj <= (n-m)/istep; jj++)
{
i = m+jj*istep;
j = i+mmax;
tempr = wr*a(j-1)-wi*a(j);
tempi = wr*a(j)+wi*a(j-1);
a(j-1) = a(i-1)-tempr;
a(j) = a(i)-tempi;
a(i-1) = a(i-1)+tempr;
a(i) = a(i)+tempi;
}
wtemp = wr;
wr = wr*wpr-wi*wpi+wr;
wi = wi*wpr+wtemp*wpi+wi;
}
mmax = istep;
}
if( inversefft )
{
for(i = 1; i <= 2*nn; i++)
{
a(i-1) = a(i-1)/nn;
}
}
}
Реализация БПФ на языке программирования Pascal
procedure LinearFDFT (Re, Im: PReal; Count: Word; Direct: ShortInt);
var
I: Word;
K: Real;
PIm, PRe: PReal;
procedure LFDFT (SrcRe, SrcIm: PReal; Cnt: Word);
var
EvenRe, OddRe, PEvenRe, POddRe, PRe, PSrcRe: PReal; …; //то же – для
мнимых
Factor: Real;
HalfCnt, I, Size: Word;
HEvenIm, HEvenRe, HOddIm, HOddRe: THandle;
X, Y, WIm, WRe: Real;
Страницы
- « первая
- ‹ предыдущая
- …
- 153
- 154
- 155
- 156
- 157
- …
- следующая ›
- последняя »