LINUX.ORG.RU

Преобразование Фурье с помощью Python/C++

 , , ,


0

2

Добрый день.

Вот у меня есть табл. функции An(tn), где Аn-амплитуда сигнала в n-ной точке, tn-время, соотв. n-ной точке. Хочу получить В(f), где f-частота сигнала, а В-относительная (относительно других частот) амплитуда частоты.

Но вот незадача: функции, например, в scipy или numpy принимают только один массив, и в каких-либо примерах я видел только как в функцию fft передают только амплитудный массив An. Насколько я понимаю, в таких случаях подразумевается, что точки распределены линейно во времени, т.е. t(n+1)-t(n)==t(n)-t(n-1). Но что, если не так?

Хорошо, допустим я решу эту проблему и буду иметь таблицу с равным расстоянием по времени между точками.

Но тут я нашёл, например, библиотеку pocketfft на плюсы (вроде бы scipy использует именно её, но не суть). Там вообще есть преобразования c2r, c2c, r2c, r2r. Что c-complex, a r-real, это я понял, а что это и зачем - не совсем.

Плюс везде есть возможность запихнуть многомерный массив в подобную функцию и я не могу понять - это мой случай или нет? По идее функция-то A(t) у меня одномерная.

PS: буду крайне благодарен, если приведёте пример, похожий на мой на плюсах. Собственно с примером дальше и сам разберусь

Хорошо, допустим я решу эту проблему и буду иметь таблицу с равным расстоянием по времени между точками

Допустим это не будет выполнено, что тогда мы получим в спектре? Тогда это будет не FFT

I-Love-Microsoft ★★★★★
()

Но что, если не так?

Для NUFFT тоже есть готовые библиотеки.

i586 ★★★★★
()

Если я правильно понял, то функция задана на неравномерной сетке. Сначала её придётся интерполировать, так чтобы она была задана на равномерной сетке. Потом уже Фурье делается. Спектр получится «переставленным» - нулевая частота будет не в центре, а по краям. Правую половину надо будет поставить налево и наоборот. Реальные значения частоты высчитываюся по формуле и зависят от числа точек.

WerNA ★★★★★
()
Последнее исправление: WerNA (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.