Вопрос

Я написал несколько простых алгоритмов аудио обработки в Matlab, который я буду использовать для приложения Android. У меня проблемы с некоторыми проблемами, переводя реализацию FFT в Java.

Я пытаюсь использовать Java-версию fftpack , который, как сообщается, эффективен, но Также мне немного загадочно для меня, возможно, потому что мое отсутствие твердого понимания на FFT в целом.

У меня просто двойной массив, из которого я хочу создать соответствующий массив комплексных чисел, представляющих FFT. Единственным расчетом, который я буду делать на FFT, является абсолютное значение его элементов.

ради ясности, вот существенный код MatLab, который я хотел бы реплицироваться с помощью Java fftpack:

X = fft(myDoubleArray);
abs(X[i]);
.

Я ожидаю, что это довольно просто, но я не могу идентифицировать точки входа в Fftpack.


Решено:

Ответ ниже из Lutzl работает, но создание объекта Complex1D на самом деле не нужно, поскольку FFTPACK поддерживает двойной массив в качестве ввода:

RealDoubleFFT rdfft = new RealDoubleFFT(myArray.length);
rdfft.ft(myArray);
.

Это было полезно?

Решение

Чтение от SourceForge JfftPack Repository

Вы инициализируете новый объект FFT через

fft = new ComplexDoubleFFT(N);
.

Тогда вы используете преобразование вперед объекта FFT с

Complex1D X;
X.x=new double[N];
X.y=new double[N];
for(k=0;k<N;k++) X.x[k]=x[k];

fft.ft(X);
.

и затем может получить доступ к абсолютным значениям, как

x=X.x[k]; y=X.y[k]; a=Math.sqrt(x*x+y*y);
.

необязательно разделить генеракодицетагкод, чтобы нормализовать FFT.

Добавление соответствующих объявлений переменной.


Обычные конвенции применяются, если сигнал отобразится с частотой дискретизации FS, запись X. (XY) [K] представляет собой частотный компонент при k * fs / n для k= n / 2 до n - 1. < / P >.


Вы можете захотеть искать другую, лучше поддерживаемую реализацию FFT, выполняемую в чистом Java, это не так сложно реализовать FFT для диадической длины. Единственное осложнение приходит при внедрении преобразования на месте, чтобы получить последний ускоряющий коэффициент.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top