Основное использование Java Fftpack
Вопрос
Я написал несколько простых алгоритмов аудио обработки в 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 для диадической длины. Единственное осложнение приходит при внедрении преобразования на месте, чтобы получить последний ускоряющий коэффициент.