IFFT Matlab симметричный против Java математических общих
Я перевожу код Matlab в Java, и у меня есть проблема, когда я не понимаю разницу между нормой X = ifft(___)
функция в Matlab по сравнению с X = ifft(___,symmetric)
, Документы Matlab они пишут:
Для почти сопряженных симметричных векторов вы можете быстрее вычислить обратное преобразование Фурье, указав параметр "симметричный", который также гарантирует, что выходные данные являются реальными.
Что значит БПФ только быстрее? и результат реален без мнимой части.
Чтобы использовать Inverse FFT в Java, я использую библиотеку Apache Commons.
FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD);
X= fft.transform(X, TransformType.INVERSE); //X is a Complex Array
Это дает мне разные результаты, если я использую симметрию в Matlab. Без симметрии в Matlab у меня тот же результат.
что не так с моим Ifft? Как рассчитать ifft симметричный с Java?
1 ответ
Если ваш X вещественный и, следовательно, ваш Y сопряженно-симметричный, вы можете использовать опцию "симметричный" для более эффективного запуска fft или ifft. Вы не должны использовать "симметричный" вариант, если это предварительное условие не применяется. Вероятно, ваш X не настоящий, не так ли?