Ответ: Лучше, но.... Еще раз.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ВН 07 февраля 2003 г. 16:15
В ответ на: Ответ: Спасибо, сейчас попробую. отправлено ВН 07 февраля 2003 г. 16:01


float DAT[512];
float KOEFF[256];
int bitrev128(int i)
{
int j=((i&1)<<6) | ((i&2)<<4) | ((i&4)<<2) | | ((i&16)>>2) | ((i&32)>>4) |((i&64)>>6);
return j;
}
int bitrev256(int i)
{
int j=((i&1)<<7) | ((i&2)<<5) | ((i&4)<<3) | ((i&8)<<1) | ((i&16)>>1) | ((i&32)>>3) | ((i&64)>>5) |((i&128)>>7);
return j;
}
void fft(void)
{
float RA,IA,RB,IB,RW,IW;
float RE,IM;
floar LI;
int NSTAG,NSUBSTAG,NBATTER;
int n,m,l,k,j,i,ll,mm;
nstg=8;
nsubstg=1;
nbtf=128;

for(n=0;n


{


mm=2*nbtf;
for(m=0;m


{
k=bitrev128(m);
RW=KOEFF[k+64];
IW=KOEFF[k];


for(l=0;l


{
k=4*m*nbtf+2*l;
ll=k+mm;
RA=DAT[k];
IA=DAT[k+1];
RB=DAT[ll];
IB=DAT[ll+1];
RE=RB*RW+IB*IW;
IM=IB*RW-RB*IW;
DAT[k]=RA+RE;
DAT[k+1]=IA+IM;
DAT[ll]=RA-RE;
DAT[ll+1]=IA-IM;
}


}


nbtf>>=1;
nsubstg<<=1;

}


for(i=0;i<256;i++)
{
j=bitrev256(i);
if(i>=j) continue;
RE=DAT[2*i];
IM=DAT[2*i+1];
DAT[2*i]=DAT[2*j];
DAT[2*i+1]=DAT[2*j+1];
DAT[2*j]=RE;
DAT[2*j+1]=IM;
}
}


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru