rceps

Реальная cepstrum и минимальная фазовая реконструкция

Синтаксис

Описание

пример

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

Примеры

свернуть все

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

В записи человек говорит слово 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)')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent Original, Echo. Axes 2 contains an object of type line. This object represents Total.

% To hear, type soundsc(mtEcho,Fs)

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

c = rceps(mtEcho);

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

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

Figure contains an axes. The axes contains 2 objects of type line.

Отмените эхо-сигнал путем фильтрации сигнала через БИХ систему, выход которой, 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)')

Figure contains 2 axes. Axes 1 contains an object of type line. This object represents Original. Axes 2 contains an object of type line. This object represents Filtered.

% To hear, type soundsc(mtNew,Fs)

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

свернуть все

Входной сигнал, заданный как вектор действительных чисел.

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

свернуть все

Real cepstrum, возвращается как вектор.

Минимальная фаза, действительный cepstrum, возвращается как вектор.

Алгоритмы

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

Примечание

rceps работает только на реальных данных.

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] Oppenheim, Alan V., and Ronald W. Schafer. Digital Signal Processing, Englewood Cliffs, NJ, Prentice Hall, 1975.

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

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

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

.

См. также

| | | |

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