Ответ: Спасибо, сейчас попробую.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено ВН 07 февраля 2003 г. 16:01
В ответ на: Надо перед текстом (в отдельной строчке) в угловых скобках написать pre, а после - /pre отправлено Xan 07 февраля 2003 г. 12:31


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;
NSTAG=8;
NSUBSTAG=1;
NBATTER=128;
for(n=0;n {
mm=NBATTER
for(m=0;m {
k=bitrev128(m);
RW=KOEFF[k+64];
IW=KOEFF[k];
for(l=0;l {
k=4*m*NBATTER+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;
}
}
NBATTER>>=1;
NSUBSTAG<<=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