Я написал несколько простых алгоритмов обработки звука в MATLAB, которые я буду использовать для приложения для Android. У меня возникли проблемы с переводом реализации FFT на Java.Основное использование Java fftpack
Я пытаюсь использовать версию Java fftpack, которая, как сообщается, эффективна, но также немного загадочна для меня, возможно, из-за того, что у меня нет четкого понимания БПФ в целом.
У меня просто есть двойной массив, из которого я хочу создать соответствующий массив комплексных чисел, представляющих БПФ. Единственный расчет, который я буду делать на БПФ, - это абсолютное значение его элементов.
Для большей наглядности, здесь важно MATLAB код, который я хотел бы повторить с помощью Java fftpack:
X = fft(myDoubleArray);
abs(X[i]);
Я ожидаю, что это довольно просто, но я не могу определить точки входа в fftpack.
РЕШИТЬ:
Ответ ниже от LutzL работает, но создание объекта Complex1D на самом деле нет необходимости, поскольку fftpack поддерживает двойной массив в качестве входных данных:
RealDoubleFFT rdfft = new RealDoubleFFT(myArray.length);
rdfft.ft(myArray);
Спасибо. Это работает, за исключением того, что fft.ft возвращает void и автоматически изменяет X. Я с радостью приму ваш ответ, как только это отразится. – Jayz7522
Да, сделано. При написании ответа я изменил все остальное для подготовки вызова, кроме фактического вызова. – LutzL