rceps

Действительный кепстр и минимальная реконструкция фазы

Синтаксис

rceps(x)
[y,ym] = rceps(x)

Описание

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

Примечание

rceps только работает над действительными данными.

rceps(x) возвращает действительный кепстр действительной последовательности x. Действительный кепстр является действительной функцией.

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

Примеры

свернуть все

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

В записи человек говорит слово MATLAB®. Загрузите данные и частоту дискретизации, Fs=7418Hz.

load mtlb

% To hear, type soundsc(mtlb,Fs)

Смоделируйте эхо путем добавления к записи копии сигнала, задержанного Δ выборки и ослабленный известным фактором α: y(n)=x(n)+αx(n-Δ). Задайте задержку 0,23 с и фактор затухания 0,5.

timelag = 0.23;
delta = round(Fs*timelag);
alpha = 0.5;

orig = [mtlb;zeros(delta,1)];
echo = [zeros(delta,1);mtlb]*alpha;

mtEcho = orig + echo;

Постройте оригинал, эхо и получившийся сигнал.

t = (0:length(mtEcho)-1)/Fs;

subplot(2,1,1)
plot(t,[orig echo])
legend('Original','Echo')

subplot(2,1,2)
plot(t,mtEcho)
legend('Total')
xlabel('Time (s)')

% To hear, type soundsc(mtEcho,Fs)

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

c = rceps(mtEcho);

[px,locs] = findpeaks(c,'Threshold',0.2,'MinPeakDistance',0.2);

clf
plot(t,c,t(locs),px,'o')
xlabel('Time (s)')

Отмените эхо путем пропущения сигнала через БИХ-систему, чья выводил, w, повинуется w(n)+αw(n-Δ)=y(n). Постройте отфильтрованный сигнал и сравните его с оригиналом.

dl = locs(2)-1;

mtNew = filter(1,[1 zeros(1,dl-1) alpha],mtEcho);

subplot(2,1,1)
plot(t,orig)
legend('Original')

subplot(2,1,2)
plot(t,mtNew)
legend('Filtered')
xlabel('Time (s)')

% To hear, type soundsc(mtNew,Fs)

Алгоритмы

rceps является реализацией алгоритма 7.2 в [2], то есть,

y = real(ifft(log(abs(fft(x)))));

Соответствующая работа с окнами в cepstral области формирует восстановленный минимальный сигнал фазы:

w = [1;2*ones(n/2-1,1);ones(1-rem(n,2),1);zeros(n/2-1,1)];
ym = real(ifft(exp(fft(w.*y))));

Ссылки

[1] Оппенхейм, Алан V и Рональд В. Шафер. Цифровая обработка сигналов, Englewood Cliffs, NJ, Prentice Hall, 1975.

[2] Программы для цифровой обработки сигналов, ИИ-Пресс, Нью-Йорк, 1979.

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

| | | |

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