Объедините cepstral анализ
xhat = cceps(x)
[xhat,nd] = cceps(x)
[xhat,nd,xhat1] = cceps(x)
[...] = cceps(x,n)
Анализ Cepstral является нелинейным методом обработки сигналов, который применяется обычно в речевой обработке и гомоморфной фильтрации [1].
cceps
только работает над действительными данными.
xhat = cceps(x)
возвращает комплексный кепстр действительной последовательности данных x
с помощью преобразования Фурье. Вход изменен, приложением линейного термина фазы, чтобы не иметь никакого разрыва фазы в ±π радианах. Таким образом, это циркулярное переключенный (после того, как нулевое дополнение) некоторыми выборками, при необходимости, чтобы иметь нулевую фазу в π радианах.
[xhat,nd] = cceps(x)
возвращает количество выборок nd
(круговой) задержки, добавленной к x
до нахождения комплексного кепстра.
[xhat,nd,xhat1] = cceps(x)
возвращает второй комплексный кепстр, xhat1
, вычислил использование альтернативного алгоритма факторизации [1][2]. Этот метод может быть применен только к сигналам конечной длительности. Смотрите раздел Algorithm ниже для сравнения Фурье и методов факторизации вычисления комплексного кепстра.
[...] = cceps(x,n)
обнулите заполняет x
к длине n
и возвращает длину кепстр комплекса n
x
.
cceps
является реализацией алгоритма 7.1 в [3]. Длинная программа Фортрана уменьшает до этих трех строк кода MATLAB®, которые составляют ядро cceps
:
h = fft(x); logh = log(abs(h)) + sqrt(-1)*rcunwrap(angle(h)); y = real(ifft(logh));
rcunwrap
в вышеупомянутом сегменте кода является специальной версией unwrap
, который вычитает прямую линию из фазы. rcunwrap
является локальной функцией в cceps
и не доступен для использования из командной строки MATLAB.
В следующей таблице перечислены за и против алгоритмов факторизации и Фурье.
Алгоритм | Профессионалы | Недостатки |
---|---|---|
Фурье | Может использоваться для любого сигнала. | Требует разворачивания фазы. Вывод искажается. |
Факторизация | Не требует разворачивания фазы. Никакое искажение | Может использоваться только для сигналов короткой продолжительности. Входной сигнал должен иметь все-нулевое Z-преобразование без нулей на модульном круге. |
В целом вы не можете использовать результаты этих двух алгоритмов проверить друг друга. Можно использовать их, чтобы проверить друг друга только, когда первый элемент входных данных положителен, Z-преобразование последовательности данных имеет только нули, все эти нули в модульном кругу, и последовательность входных данных длинна (или дополненный нулями).
[1] Оппенхейм, Алан V, Рональд В. Шафер и Джон Р. Бак. Обработка сигналов дискретного времени. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999, стр 788–789.
[2] Steiglitz, K. и Б. Дикинсон. “Вычисление Комплексного Кепстра Факторизацией Z-преобразования”. Продолжения Международной конференции 1977 IEEE® по вопросам Акустики, Речи и Обработки сигналов, стр 723–726.
[3] Комитет по Цифровой обработке сигналов Акустики IEEE, Речи, и Общества Обработки сигналов, программ редакторов для Цифровой обработки сигналов. Нью-Йорк: Нажатие IEEE, 1979.