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 не настоящий, не так ли?

Другие вопросы по тегам