LINUX.ORG.RU

Размер буфера FFTW

 , ,


1

2

Авторы FFTW3 «умеют» писать документацию…

Вот вопрос: в функции fftw_plan fftw_plan_dft_c2r_1d(int n, fftw_complex *in, double *out, unsigned flags); какой размер in, а какой out? Они написали только про r2c, а мне c2r нужно…

Ну или посоветуйте, пожалуйста, другую библиотеку БПФ с нормальной документацией

Размер буферов это размер окна, т.е количество точек над которыми происходит преобразование, чем меньше окно - тем быстрее работает алгоритм, и тем хуже качество преобразования. Кроме того размер окна - это задержка, на которую будут отставать выходные данные. Самый популярный размер окна - 256 точек. Да, выходной массив - это массив частот 0-Пи/2 (где 0 - это минимальная исследуемая частоа, а Пи/2 - максимальная, при этом надо учитывать что дискретизация должна быть в два раза выше максимально исследуемой частоты.),

Silerus ★★★★
()
Последнее исправление: Silerus (всего исправлений: 1)
Ответ на: комментарий от Silerus

Я это знаю, если б не знал не написал бы w2midi… Проблема в другом. Я хочу программу улучшить, сделать кепстральный анализ и автокорреляцию, вообще все перелопатить.

Я уже работал с fftw_plan_dft_r2c, там проблема в том что размер входа и выхода разные, выход в два раза меньше, чем вход. А в fftw_plan_dft_c2r они не пишут какие размеры. Параметр n он к in или out относится, какой размер массива in, какой размер out в зависимости от n?

Вот в чем вопрос…

realbarmaley ★★
() автор топика
Ответ на: комментарий от realbarmaley

в документации написано что к обоим

Here, n is the “logical” size of the DFT, not necessarily the physical size of the array. In particular, the real (double) array has n elements, while the complex (fftw_complex) array has n/2+1 elements (where the division is rounded down). For an in-place transform, in and out are aliased to the same array, which must be big enough to hold both; so, the real array would actually have 2*(n/2+1) elements, where the elements beyond the first n are unused padding. (Note that this is very different from the concept of “zero-padding” a transform to a larger length, which changes the logical size of the DFT by actually adding new input data.) The kth element of the complex array is exactly the same as the kth element of the corresponding complex DFT. All positive n are supported; products of small factors are most efficient, but an O(n log n) algorithm is used even for prime sizes.

Silerus ★★★★
()
Ответ на: комментарий от mrn

Я уже думаю перейти на kissfft. Читаю fftw3 исходники и офигеваю… Они получается код генерируют еще, потом компилируют, еще на ассемблере пишут…….. Жесть

realbarmaley ★★
() автор топика