cceps

复杂的cepstral分析

描述

例子

xhat= cceps(x)返回复杂的倒频谱xhat真实数据序列x利用傅里叶变换。

请注意

cceps只对真实数据有效。

(xhat,ND) = cceps (x)返回的样本数ND(循环)延迟的x之前找到复倒谱。

(xhat,ND,xhat1) = cceps (x)返回的第二复倒谱,xhat1

(___) = cceps (x,n)零垫x长度n并返回长度n

例子

全部折叠

这个示例使用cceps显示一个回音。产生45赫兹的正弦频率,在100赫兹取样。在0.2秒后再加一个振幅减半的回声。计算信号的复倒谱。注意0。2秒的回声。

FS = 100;t = 0时:1 / FS:1.27;S1 = SIN(2 * PI * 45 * T);S2 = S1 + 0.5 * [零(1,20)S1(1:108)];C = cceps(S2);图(T,C)xlabel('时间(s)')标题(复杂的倒频谱的)

输入参数

全部折叠

输入信号,指定为实向量。通过线性相位项的应用,使输入在±时无相位不连续π弧度。也就是说,它被一些样本循环移位(在零填充之后),如果必要的话,在π弧度。

填零信号的长度,指定为正的实整数。

输出参数

全部折叠

复倒谱,作为载体返回。

增加循环延迟的样本数x,返回为正实标量。

第二个复倒谱,作为载体返回。xhat1是否使用参考资料中指定的替代因子分解算法计算[1][2]。这种方法只适用于有限持续时间的信号。关于计算复倒谱的傅里叶分解和因子分解方法的比较,请参阅下面的算法部分。

算法

倒频谱分析是在语音处理和同态滤波最常用的非线性信号处理技术[1]cceps算法7.1的实现在[3]。一个冗长的Fortran程序可以简化为这三行MATLAB®码,其构成的芯cceps:

h = fft (x);logh =日志(abs (h) +√(1)* rcunwrap(角(h));y =实际(传输线(logh));

请注意

rcunwrap上面的代码段是一个特殊的版本相位减去一条直线。rcunwrap是一个本地函数内吗cceps并且不能从MATLAB命令行中使用。

下表列出了傅立叶和分解算法的优劣。

算法 优点 缺点
傅里叶 可用于任何信号。 需要相位展开。输出的别名。
因式分解 不需要相位展开。没有混叠 只能用于短时间信号。输入信号必须进行全零z变换,在单位圆上不能有零。

一般来说,不能使用这两种算法的结果来互相验证。您可以使用它们来验证彼此只有当第一个元素的输入数据是正的,数据的z变换序列只有0,所有的0都在单位圆内,和输入数据序列(或垫0)。

参考

奥本海姆,艾伦五世,罗纳德W.谢弗和约翰R.巴克。离散时间信号处理。上鞍河,新泽西州:普伦蒂斯霍尔出版社,1999,第788-789页。

[2] Steiglitz,K.,和B.迪金森。“由Z变换分解复倒谱的计算。”1977年IEEE会刊®国际声学、语音和信号处理会议,第723-726。

IEEE声学、语音和信号处理学会[3]数字信号处理委员会。数字信号处理程序。纽约:IEEE出版社,1979年。

扩展功能

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

另请参阅

|||

R2006a前推出