cceps

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

Описание

пример

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

Примечание

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')

Входные параметры

свернуть все

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

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

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

свернуть все

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

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

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

Алгоритмы

Кепстральный анализ является нелинейным методом обработки сигналов, который применяется обычно в речевой обработке и гомоморфной фильтрации [1]. 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.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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

| | |

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