Znalazłem proste i dobrze działające funkcje fft i ifft. Za ich pomocą robie analize 512 próbek. Na wyjściu mam 2 tablice liczb typu double. Spektrum uzyskuje w ten sposób (wyciete ze znalezionego kodu):
double *real, ///czesc rzeczywista
*imag, ///ta druga
*spec; ///widmo
///...
fft(512,real,imag);
double a = 0;
int i = 0;
for(i = 0; i < 512; i++)
{
spec[i] = sqrt(real[i] * real[i] + imag[i] * imag[i]);
if(spec[i] > a) a = spec[i];
}
for(i = 0; i < 512; i++)
spec[i] /= a;
///...
I teraz mam problem. Wszystko da sie wyswietlic tylko ze zamiast poukładanego spektrum, mam sieczke, tzn: zadna liczba nie jest w tym miejscu w którym powinna byc. Gdy zwieksze czestotliwosc sygnału podanego w real to widmo sie przesówa ale nie pokolei tylko skacze z jednego konca na drugi zblizając sie ku srodkowi.
Wiec wie ktos jak z czegos takiego uzyskac ładne poukładane widmo do wyswietlenia na wykresie ??
double *real, ///czesc rzeczywista
*imag, ///ta druga
*spec; ///widmo
///...
fft(512,real,imag);
double a = 0;
int i = 0;
for(i = 0; i < 512; i++)
{
spec[i] = sqrt(real[i] * real[i] + imag[i] * imag[i]);
if(spec[i] > a) a = spec[i];
}
for(i = 0; i < 512; i++)
spec[i] /= a;
///...
I teraz mam problem. Wszystko da sie wyswietlic tylko ze zamiast poukładanego spektrum, mam sieczke, tzn: zadna liczba nie jest w tym miejscu w którym powinna byc. Gdy zwieksze czestotliwosc sygnału podanego w real to widmo sie przesówa ale nie pokolei tylko skacze z jednego konca na drugi zblizając sie ku srodkowi.
Wiec wie ktos jak z czegos takiego uzyskac ładne poukładane widmo do wyswietlenia na wykresie ??
