Документация Engee

cceps

Комплексный кепстральный анализ.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • xhat, nd, xhat1 = cceps(x) — возвращает комплексный кепстр xhat и второй комплексный кепстр xhat1 вещественной последовательности данных x с использованием преобразования Фурье. Также возвращает количество отсчетов nd (круговой) задержки, добавленных к x перед нахождением комплексного кепстра.

  • xhat, nd, xhat1 = cceps(x, n) — также дополняет x нулями до длины n.

Функция cceps работает только с вещественными данными.

Аргументы

Входные аргументы

# x — входной сигнал
вещественный вектор

Details

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

# n — длина сигнала, дополненного нулями
положительное вещественное целое число

Details

Длина сигнала, дополненного нулями, заданная как положительное вещественное целое число.

Выходные аргументы

# xhat — комплексный кепстр
вектор

Details

Комплексный кепстр, возвращаемый в виде вектора.

# nd — число отсчетов
положительный вещественный скаляр

Details

Число отсчетов круговой задержки, добавленных к x, возвращаемое как положительный вещественный скаляр.

# xhat1 — второй комплексный кепстр
вектор

Details

Второй комплексный кепстр, возвращаемый в виде вектора. Аргумент xhat1 вычисляется с использованием альтернативного алгоритма факторизации, описанного в [1] и [2]. Этот метод применим только к сигналам конечной длительности. В разделе Алгоритмы приведено сравнение методов Фурье и факторизации для вычисления комплексного кепстра.

Примеры

Использование cceps для отображения эха сигнала

Details

В этом примере cceps используется для отображения эха сигнала. Сгенерируем синусоидальный сигнал частотой 45 Гц и дискретизацией 100 Гц. Добавим эхо-сигнал с половиной амплитуды и с задержкой 0.2 с. Вычислим комплексный кепстр сигнала. Обратим внимание на эхо-сигнал с задержкой 0.2 с.

import EngeeDSP.Functions: cceps

Fs = 100
t = 0:1/Fs:1.27
s1 = sin.(2*pi*45*t)
s2 = s1 + 0.5*[zeros(20); s1[1:108]]
c1, nd, c2 = cceps(s2)
plot(t, c1, title="Complex cepstrum", legend=false)

cceps

Алгоритмы

Кепстральный анализ — это метод нелинейной обработки сигналов, наиболее часто применяемый в обработке речи и гомоморфной фильтрации [1]. Функция cceps — это реализация алгоритма 7.1 из [3].

В таблице перечислены преимущества и недостатки алгоритмов Фурье и факторизации.

Алгоритм Преимущества Недостатки

Фурье

Может быть использован для любых сигналов.

Требуется развертывание фазы. Выходной сигнал низкочастотный.

Факторизация

Не требуется развертывание фазы. Нет наложения частот.

Может использоваться только для кратковременных сигналов. Входной сигнал должен иметь Z-преобразование со всеми нулями, без нулей на единичной окружности.

В общем случае, результаты этих двух алгоритмов нельзя использовать для взаимной проверки. Их можно использовать для взаимной проверки только в том случае, если первый элемент входных данных положительный, Z-преобразование последовательности данных содержит только нули, все эти нули находятся внутри единичной окружности, а входная последовательность данных длинная (или дополнена нулями).

Литература

  1. Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999, pp. 788–789.

  2. Steiglitz, K., and B. Dickinson. Computation of the Complex Cepstrum by Factorization of the Z-transform. Proceedings of the 1977 IEEE® International Conference on Acoustics, Speech and Signal Processing, pp. 723–726.

  3. Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979.