![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FFT [D7, WinXP]
ST © (2004-01-26 19:25:00)Здравствуй многоуважаемый ALL! Не подскажешь ли мне, где можно найти библиотеку, модуль, или просто процедуру FFT? Заранее благодарен.
тихий вовочка (2004-01-27 19:10:00) [1]Intel Signal Processing Library нет на интеловском сайте(вместо него Math Kernel Library), но рпи желании скачать можно на сайте LCard. А для БПФ лучшее что я нашел и использую - FFTW www.fftw.org, чего и вам желаю
ST (2004-01-27 19:06:00) [2]Спасибо всем огромное ;-)
Jolik (2004-01-27 11:55:00) [3]http://www.teworks.com/download.htm
Jolik (2004-01-27 11:53:00) [4]http://homepages.borland.com/efg2lab/Library/Delphi/MathFunctions/Engineering.htm
Digitman (2004-01-27 11:27:00) [5]
> Tolyan (27.01.04 10:50) [6]
а была
я скачивал ISPL v4.2 именно оттуда
вероятно, теперь ее следует поискать на filesearch.ru
Tolyan (2004-01-27 10:50:00) [6]> Digitman
Нету на сайте Интела этой Библиотеки
я уже давно ищу этот Intel Signal processing Library
может мне кто подскажет, где найти.
А FFT когда-то на Pascal написал, если очень надо, то могу выслать. Но хочется чего-то оптимального
Digitman (2004-01-27 08:18:00) [7]
> ST (26.01.04 19:25)
на сайте у Интела - Intel Signal processing Library
там же есть демо-проект для тестирования возможностей библиотеки в среде Делфи
just me (2004-01-26 21:34:00) [8]Например, тут:
http://www.efg2.com/Lab/Library/mathematics.htm#Fourier
Brahman (2004-01-26 20:53:00) [9]// fft.h
#define FFT -1
#define REV_FFT 1
void fft(float *real,float *imaginary,int order,int param);
// fft.c
/*
Radix 2 FFT calculation
order = the order of FFT ( pow(2,order) calculated complex points )
param = FFT - performs FFT
param = REV_FFT - performs reverse FFT
x = pointer to real
y = pointer to immaginary
*/
#include <math.h>
#include "fft.h"
#define M_PI 3.14159265359
void fft(float *x,float *y,int order,int param)
{
unsigned int n,l,e,f,i,j,o,o1,j1,i1,k;
float u,v,z,c,s,p,q,r,t,w,a;
n=1u<<order;
for(l=1;l<=order;l++)
{
u=1.0;
v=0.0;
e=1u<<(order-l+1);
f=e/2;
z=M_PI/f;
c=cos(z);
s=sin(z);
if(param==FFT) s=-s;
for(j=1;j<=f;j++)
{
for(i=j;i<=n;i+=e)
{
o=i+f-1;
o1=i-1;
p=x[o1]+x[o];
r=x[o1]-x[o];
q=y[o1]+y[o];
t=y[o1]-y[o];
x[o]=r*u-t*v;
y[o]=t*u+r*v;
x[o1]=p;
y[o1]=q;
}
w=u*c-v*s;
v=v*c+u*s;
u=w;
}
}
j=1;
for(i=1;i<n;i++)
{
if(i<j)
{
j1=j-1;
i1=i-1;
p=x[j1];
q=y[j1];
x[j1]=x[i1];
y[j1]=y[i1];
x[i1]=p;
y[i1]=q;
}
k=n/2;
while(k<j)
{
j=j-k;
k=k/2;
}
j+=k;
}
if(param==FFT) return;
a=1.0/n;
for(k=0;k<n;k++)
{
x[k]*=a;
y[k]*=a;
}
return;
}
Mihey (2004-01-26 20:04:00) [10]Есть такой faq - называется Kuliba1000. В нём есть статейка на этот счёт.
Плохиш_ (2004-01-26 19:29:00) [11]в интернете