MATLAB中的复倒谱变换

时间:2013-07-16 14:52:53

标签: matlab audio transform signal-processing complex-numbers

我正在尝试在MATLAB中对数组执行complex cepstral transform,并且对于cceps(x)是否使用正确的命令感到困惑。通过我的研究,我发现了一篇论文,它使用公式c(n) = ifft(log(fft(x))计算复数倒谱谱,其中x是音频信号。但是,cceps返回的数据与此公式不同,cceps返回的数据也不复杂。任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:2)

doc的{​​{1}}提供了有关其使用的处理方法的参考文献。如果您使用cceps,则可以查看代码(任何工具箱函数都是如此),您可以看到edit cceps使用cceps,但也使用了相位展开功能,并且只返回实际值,所以简而言之ifft(log(fft(x))。如果需要,可以编辑函数以返回复数值。

答案 1 :(得分:0)

对我来说cceps(x)和c(n)= ifft(log(fft(x))返回非常接近的结果

代码示例:

frame = signal;
win = hamming(length(frame));
windowedSignal = frame.*win;
fftResult=log(abs(fft(windowedSignal)));
ceps=ifft(fftResult);
subplot(2,1,1); plot(ceps); legend('c(n)=ifft(log(fft(x))');
subplot(2,1,2); plot(cceps(frame));legend('cceps');

我们在这里看到的差异似乎是由窗口引起的

enter image description here