Я хотел узнать, почему аргументы за конфликтом ТОЛЬКО в мнимых частях после IFFT.Конфликт во мнимых частях после IFFT
Для реализации моего C/C++ и реализации Matlab я выполняю следующие шаги.
- Мой сигнал х имеет размерность MX1 и я выполнить N-точечное FFT (где N = 2 * М) по этому сигналу, чтобы получить N-точечное сигнал в частотной области.
- Применять настроенный фильтр на этот сигнал частотной области (как действительная, так и мнимая части изменены на шаге).
- Выполнение в N-точка обратного БПФ.
реализации Оба C/C++ и Matlab генерировать точно такой же результат, за исключением после стадии обратного БПФ, мнимые части не совпадают, но действительные части действительно совпадают.
Если я пропустил шаг 2 выше, выход IFFT обоих вариантов реализации будет без проблем. Предполагается, что мой входной сигнал для IFFT (то есть после фильтра с шагом 2) не должен быть сопряженным симметричным. Infact этот сигнал может даже не быть эрмитовым/симметричным.
В настоящее время я использую C-реализацию FFT/IFFT, определенную как функцию smbFft
, представленную в этом документе CPP-FILE.
Любые подсказки, почему это может произойти?
PS: Было бы здорово, если бы кто-то мог указать мне на реализацию FFT в C/C++, которая точно совпадает с соответствующей реализацией Matlab.
Спасибо.
Редактировать: Я только что протестировал реализацию FFTW вместо smbFfT
(упоминалось выше). Реализация FFTW также имеет ту же проблему, которая предполагает, что обе эти тестируемые C-реализации выполняют IFFT с настройкой симметрии эрмитов. Мне нужно выполнить тот же IFFT в C, что и Matlab с IFFT(..., 'nonsymmetric')
.
Отправьте свой код. Специально, остерегайтесь оператора Matlab '' ', который применяет комплексное сопряжение. –
попробуйте FFT -> IFFT * без * других изменений с обоими кодами, также подтвердите, что обратная операция в вашем коде C верна. Результаты должны быть равны входному значению (с учетом численной точности). – Sebastien
@ Sebastien. Я только что отредактировал выше, я пропустил шаг 2 выше, выход IFFT совпадает с IFFT Matlab. – Junaid