主要内容

cceps

复杂的cepstral分析

描述

例子

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

请注意

cceps只对真实数据有效。

xhatnd) = cceps (x返回样本的数量nd(循环)延迟的增加x在找到复杂的倒频谱之前。

xhatndxhat1) = cceps (x返回第二个复杂的倒谱,xhat1

___) = cceps (xn零垫x长度n然后返回长度n

例子

全部折叠

这个示例使用cceps显示回声。产生频率为45hz的正弦值,采样频率为100hz。增加一个振幅减半,延迟0.2秒的回波。计算信号的复倒谱。注意在0.2秒处的回声。

Fs = 100;t = 0:1 / Fs: 1.27;s1 =罪(2 *π* 45 * t);S2 = s1 + 0.5*[0 (1,20) s1(1:20)];c = cceps (s2);情节(t、c)包含(“时间(s)”)标题(复杂的倒频谱的

图中包含一个轴对象。标题为Complex倒谱的轴对象包含一个类型为line的对象。

输入参数

全部折叠

输入信号,指定为实向量。通过应用线性相位项,输入改变为在±处无相位间断π弧度。也就是说,它被一些样品循环移动(零填充后),如果有必要,有零相位π弧度。

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

输出参数

全部折叠

复杂的倒谱,作为矢量返回。

加入循环延迟的样本数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变换只有零、所有这些零都在单位圆内、输入数据序列很长(或用零填充)时,才能使用它们来相互验证。

参考文献

Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck。离散时间信号处理。Upper Saddle River, NJ: Prentice Hall, 1999, pp. 788-789。

[2] Steiglitz K.和B. Dickinson。用z变换分解复倒谱的计算1977年IEEE会议记录®国际声学、语音和信号处理会议, 723 - 726页。

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

扩展功能

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

之前介绍过的R2006a