主要内容

rceps

真实倒谱和最小相位重建

描述

例子

yym) = rceps (x返回真实的倒谱y和最小相位重建版本ym输入序列的。

例子

全部折叠

语音录音包括由墙壁反射引起的回声。用真正的倒频谱把它过滤掉。

在录音中,一个人说了单词MATLAB®。加载数据和采样率, F 年代 7 4 1 8 H z

负载mtlb%听到,键入soundsc(mtlb,Fs)

通过在记录中添加一个延迟的信号副本来模拟回声 Δ 样本和衰减的已知因素 α y n x n + α x n - Δ .指定时间延迟为0.23 s,衰减系数为0.5。

时滞= 0.23;δ=圆(Fs *时滞);α= 0.5;源自= [mtlb; 0(δ1)];回声=[0(δ1);mtlb] *α;mtEcho = origin + echo;

绘制出原始信号、回波和最终信号。

t =(0:长度(mtEcho) 1) / Fs;Subplot (2,1,1) plot(t,[origin echo]) legend(“原始”“回声”)子图(2,1,2)图(t,mtEcho)图例(“总”)包含(“时间(s)”

图中包含2个轴对象。坐标轴对象1包含2个类型为line的对象。这些物体代表原始,回声。axis对象2包含一个类型为line的对象。该对象表示Total。

%听到,键入soundsc(mtEcho,Fs)

计算信号的真实倒谱。绘制倒谱并注释其最大值。当回声开始到达时,倒频谱有一个尖峰。

c = rceps (mtEcho);(px, loc) = findpeaks (c,“阈值”, 0.2,“MinPeakDistance”, 0.2);clf情节(t、c、t (loc), px,“o”)包含(“时间(s)”

图中包含一个轴对象。轴对象包含两个类型为line的对象。

通过IIR系统对信号进行滤波,消除回波。 w ,遵循 w n + α w n - Δ y n .将滤波后的信号与原始信号进行比较。

dl = loc (2) 1;mtNew = filter(1,[1 zeros(1,dl-1) alpha],mtEcho);次要情节(2,1,1)情节(t,源自)传说(“原始”) subplot(2,1,2) plot(t,mtNew) legend(“过滤”)包含(“时间(s)”

图中包含2个轴对象。axis对象1包含一个类型为line的对象。这个对象代表Original。axis对象2包含一个类型为line的对象。这个对象表示已过滤。

%听到,键入soundsc(mtNew,Fs)

输入参数

全部折叠

输入信号,指定为实向量。

输出参数

全部折叠

真实的倒频谱,作为矢量返回。

最小相位实倒谱,作为矢量返回。

算法

真正的倒频谱是序列傅里叶变换幅度的实对数的傅里叶反变换。

请注意

rceps只对真实数据有效。

rceps是算法7.2 in的实现吗[2],也就是说,

y =实际(传输线(日志(abs (fft (x)))));

在倒谱域适当的加窗形成重构的最小相位信号:

w = [1, 2 * (n / 2 - 1, 1)的;那些(1-rem (n, 2), 1), 0 (n / 2 - 1, 1)];ym =实际(传输线(exp (fft (w。* y))));

参考文献

奥本海姆,艾伦五世,罗纳德w谢弗。数字信号处理, Englewood Cliffs, NJ, Prentice-Hall, 1975。

[2]数字信号处理程序, IEEE出版社,纽约,1979。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

之前介绍过的R2006a