Анализ кепстра

Что такое кепстр?

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

Комплексный кепстр последовательности x вычисляется путем нахождения комплексного натурального логарифма преобразования Фурье x, затем обратное преобразование Фурье получившейся последовательности:

xˆ=12π-ππжурнал[X(ejω)]ejωndω.

Функция тулбокса cceps выполняет эту операцию, оценивая комплексный кепстр для входной последовательности. Это возвращает действительную последовательность тот же размер как входная последовательность.

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

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

Вычислите и постройте комплексный кепстр нового сигнала.

c = cceps(s2);
plot(t,c)

Комплексный кепстр показывает пик в 0,2 секунды, указывая на эхо.

Действительный кепстр сигнала x, иногда называемого просто кепстр, вычисляется путем определения натурального логарифма величины преобразования Фурье x, затем получения обратного преобразования Фурье получившейся последовательности:

cx=12π-ππжурнал|X(ejω)|ejωndω.

Функция тулбокса rceps выполняет эту операцию, возвращая действительный кепстр для последовательности. Возвращенная последовательность является вектором с действительным знаком тот же размер как входной вектор.

rceps функционируйте также возвращает уникальную последовательность минимальной фазы, которая имеет тот же действительный кепстр как вход. Чтобы получить и действительный кепстр и реконструкцию минимальной фазы для последовательности, используйте [y,ym] = rceps(x), где y действительный кепстр и ym минимальная реконструкция фазы x. Следующий пример показывает что один выход rceps уникальная последовательность минимальной фазы с тем же действительным кепстром как x.

y = [4 1 5];                 % Non-minimum phase sequence
[xhat,yhat] = rceps(y);
xhat2 = rceps(yhat); 
[xhat' xhat2']
ans = 3×2

    1.6225    1.6225
    0.3400    0.3400
    0.3400    0.3400

Обратный комплексный кепстр

Чтобы инвертировать комплексный кепстр, используйте icceps функция. Инверсия осложнена тем, что cceps функция выполняет информационно-зависимую модификацию фазы так, чтобы развернутая фаза ее входа была непрерывна на нулевой частоте. Модификация фазы эквивалентна целочисленной задержке. Этот термин задержки возвращен cceps если вы просите второй выход:

x = 1:10;
[xhat,delay] = cceps(x)
xhat = 1×10

    2.2428   -0.0420   -0.0210    0.0045    0.0366    0.0788    0.1386    0.2327    0.4114    0.9249

delay = 1

Чтобы инвертировать комплексный кепстр, используйте icceps исходным параметром задержки:

icc = icceps(xhat,2)
icc = 1×10

    2.0000    3.0000    4.0000    5.0000    6.0000    7.0000    8.0000    9.0000   10.0000    1.0000

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

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

| |