exponenta event banner

cceps

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

Описание

пример

xhat = cceps(x) возвращает сложный кепстр xhat действительной последовательности данных x с помощью преобразования Фурье.

Примечание

cceps работает только на реальных данных.

[xhat,nd] = cceps(x) возвращает количество выборок nd (циклической) задержки, добавленной к x до нахождения сложного кепстра.

[xhat,nd,xhat1] = cceps(x) возвращает второй комплексный кепстр, xhat1.

[___] = cceps(x,n) нулевые колодки x к длине n и возвращает длину n.

Примеры

свернуть все

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

Fs = 100;
t = 0:1/Fs:1.27;

s1 = sin(2*pi*45*t);		
s2 = s1 + 0.5*[zeros(1,20) s1(1:108)];

c = cceps(s2);

plot(t,c)
xlabel('Time (s)')
title('Complex cepstrum')

Figure contains an axes. The axes with title Complex cepstrum contains an object of type line.

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

свернуть все

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

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

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

свернуть все

Сложный кепстр, возвращенный как вектор.

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

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

Алгоритмы

Кэпстральный анализ - это нелинейный метод обработки сигналов, который наиболее часто применяется при обработке речи и гомоморфной фильтрации [1]. cceps является реализацией алгоритма 7.1 в [3]. Длительная программа Fortran сводится к этим трем строкам кода 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] Оппенгейм, Алан В., Рональд В. Шефер и Джон Р. Бак. Дискретно-временная обработка сигналов. Река Верхнее Седло, Нью-Джерси: Прентис Холл, 1999, стр. 788-789.

[2] Стейглиц, К. и Б. Дикинсон. «Вычисление комплексного цепструма путем факторизации Z-преобразования». Материалы Международной конференции IEEE ® 1977 года по акустике, обработке речи и сигналов , стр. 723-726.

[3] Комитет по цифровой обработке сигналов Общества по акустической, речевой и сигнальной обработке IEEE, eds. Программы для цифровой обработки сигналов. Нью-Йорк: IEEE Press, 1979.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| | |

Представлен до R2006a