Анализ Cepstrum является нелинейным методом обработки сигналов с множеством применений в таких областях, как обработка речи и изображений.
Комплексный cepstrum последовательности x вычисляется путем нахождения комплексного естественного логарифма преобразования Фурье x, затем обратного преобразования Фурье полученной последовательности:
Функция тулбокса cceps
выполняет эту операцию, оценивая комплексный cepstrum для последовательности входа. Он возвращает действительную последовательность того же размера, что и входная последовательность.
Попробуйте использовать 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)];
Вычислите и постройте график комплексного cepstrum нового сигнала.
c = cceps(s2); plot(t,c)
Комплексный cepstrum показывает пик в 0,2 секунды, указывая на эхо.
Действительный cepstrum сигнала x, иногда называемый просто cepstrum, вычисляется путем определения естественного логарифма величины преобразования Фурье x, затем получения обратного преобразования Фурье полученной последовательности:
Функция тулбокса rceps
выполняет эту операцию, возвращая действительный cepstrum для последовательности. Возвращенная последовательность является действительным вектором того же размера, что и входной вектор.
The rceps
функция также возвращает уникальную минимально-фазовую последовательность, которая имеет тот же действительный cepstrum, что и вход. Чтобы получить как действительный cepstrum, так и минимально-фазовую реконструкцию для последовательности, используйте [y,ym] = rceps(x)
, где y
является реальным cepstrum и ym
- минимальная фазовая реконструкция x
. Следующий пример показывает, что один выход rceps
является уникальной минимально-фазовой последовательностью с таким же действительным cepstrum, как 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
Чтобы инвертировать комплексный cepstrum, используйте 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
Чтобы инвертировать комплексный cepstrum, используйте 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
Как показано в приведенном выше примере, при любой модификации комплексного cepstrum первоначальный срок задержки может больше не быть действительным. Вы не сможете точно инвертировать комплексный cepstrum.