cceps

Объедините 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, чтобы показать эхо. Сгенерируйте синус частоты 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')

Алгоритмы

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.

Смотрите также

| | |

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