Apple FFT Accelerate Framework Обратное БПФ из массива действительных чисел

Я использую функции ускоренного БПФ для создания спектрограммы звукового образца. Эта часть отлично работает. Однако я хочу (эффективно) манипулировать спектром напрямую (т. е. манипулировать действительными числами), а затем снова вызывать инверсию, как мне это сделать? Похоже, что вызов INVERSE ожидает массив ВООБРАЖАЕМЫХ чисел, но как я могу получить это из моих манипулируемых действительных чисел? Я попытался сделать массив realp моими реалами, а часть imagp - нулевой, но, похоже, это не сработало.

Причина, по которой я спрашиваю об этом, заключается в том, что я хочу запустить БПФ на сэмпле голосового аудио, а затем снова запустить БПФ, а затем поднять нижнюю часть кепстра (таким образом, мы надеемся отделить компоненты голосового тракта от высоты тона), а затем выполнить БПФ. обратное БПФ снова, чтобы получить спектрограмму, показывающую информацию о голосовом тракте (форманте) более четко (т. е. без информации о высоте тона). Однако у меня, похоже, возникают проблемы с обратным БПФ, в который я передаю свои реальные значения (кепстр) в массиве realp, а imagp равен нулю. Я думаю, что я делаю что-то не так, и результаты неожиданны.


person raeldor    schedule 07.04.2012    source источник


Ответы (1)


Вам необходимо обрабатывать сложные результаты прямого БПФ, а не реальные величины, иначе форма спектра результатов IFFT будет искажена. Не считайте их мнимыми числами, считайте их частью двумерного вектора, содержащего необходимую информацию об угловой фазе.

Если ваш кепстральный подъемник/фильтр изменяет только реальные величины, то вы можете попробовать использовать величину изменения реальных величин в качестве коэффициентов масштабирования, чтобы изменить результат прямого сложного БПФ перед выполнением сложного ОБПФ.

person hotpaw2    schedule 07.04.2012
comment
Спасибо за ваш ответ. Буду ли я масштабировать обе части realp и imagp, или мне нужно масштабировать только одну? Итак, нет способа обратить преобразование величины обратно в «информацию о фазе»? - person raeldor; 08.04.2012
comment
Длина чего-либо не имеет ничего общего с углом, под которым оно направлено. Найдите atan2(). - person hotpaw2; 08.04.2012
comment
Понятно. Спасибо, что разъяснили мне это простым языком. :) - person raeldor; 09.04.2012
comment
О, еще один быстрый вопрос, если позволите. Если комплексное число содержит и величину, и направление, возможно ли извлечь и то, и другое, изменить одно, а затем снова восстановить комплексное число? Извините, если это глупый вопрос. - person raeldor; 09.04.2012