[an error occurred while processing this directive]
Ответ: Да, почти ничего не оставил. Попробую еще.
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено ВН 16 июля 2003 г. 21:15
В ответ на: Ответ: отправлено ВН 16 июля 2003 г. 21:12



float re[4096];
float im[4096];
float gegen[1024];
float signal[1024];
void main(void)
{
int i,imax,lsrh,hsrh;
float x,y,z,sumgeg,sumsig,sumfr,frq,phase,amp;
float lensign=0.9;
float freqp=50;
for(i=0;i<4096;i++)
{
re[i]=0.;
im[i]=0.;
}
x=1024.*1024;
for(i=0;i<1024;i++)
{
gegen[i]=pow((((float)i+1.)*(1024.-(float)i)*4./x),4.);//GEGENBAUER WINDOW
re[i]=gegen[i];
}
fft(re,im,4096);
for(i=0;i<4096;i++) {re[i]/=4096.;im[i]/=4096;}
sumgeg=re[0]*re[0]+im[0]*im[0];
for(i=1;i<3;i++) {sumgeg+=2.*(re[i]*re[i]+im[i]*im[i]);}
for(i=0;i<4096;i++)
{
re[i]=0.;
im[i]=0.;
if(i<1024) re[i]=gegen[i]*signal[i];
}
fft(re,im,4096);
for(i=0;i<4096;i++) {re[i]/=4096.;im[i]/=4096;}
i=(int)(floor((lensign*freqp)));
lsrh=(i-2)*4;
hsrh=(i+2)*4;
x=0.;
for(i=lsrh;i<=hsrh;i++)
{
y=re[i]*re[i]+im[i]*im[i];
if(y>x) {imax=i;x=y;}
}
sumsig=0.;
sumfr=0.;
for(i=(imax-2);i<=(imax+2);i++)
{
y=re[i]*re[i]+im[i]*im[i];
sumsig+=y;
sumfr+=y*(float)i;
}
amp=2.*sqrt((sumsig/sumgeg)); //amplitude estimation
frq=sumfr/sumsig; //frequency estimation
i=(int)(floor((frq+0.5)));
x=re[i];
y=im[i];
phase=atan2(y,x); //phase estimation
/* or:
i=(int)(floor((frq)));
x=atan2(im[i],re[i]);
y=atan2(im[i+1],re[i+1]);
phase=(y-x)*(frq-(float)i)+x; //phase estim.
*/
}





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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru