在matlab中有一个内置函数是designAuditoryFilterBank,图中所示对梅尔倒谱系数的计算中,对信号进行了短时傅里叶变化(就是进行了分帧加窗和DFT)后,只是取了其中的模,就与梅尔滤波器相乘。
我在其他网上看见是取其中的模再对其求平方,得到功率再与梅尔滤波器相乘。我想问下为什么?

对matlab中内置函数求MFCC的不理解
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 一轮明月照丘壑 2024-10-06 16:02关注
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
根据您提供的信息,似乎您在使用MFCC(Mel Frequency Cepstral Coefficients)特征提取时遇到了差异。然而,您提供的图1和图2内容看起来非常相似,仅仅是一些数字序列,而没有具体描述您自己编写的MFCC代码和调用MATLAB内置函数MFCC的具体情境。因此,很难确定出现差异的确切原因。
一般来说,MFCC特征提取的差异可能由以下几个因素引起:
- 输入数据差异:确保您自己编写的代码和调用内置函数的输入数据是相同的。任何细微的差异(如数据格式、预处理步骤等)都可能导致结果不同。
- 算法实现差异:您自己编写的MFCC提取代码和MATLAB内置函数的实现可能存在差异。这包括算法参数、计算步骤、近似方法等。即使算法的基本思想相同,具体的实现细节也可能导致结果不同。
- 数值计算误差:在进行数值计算时,例如进行傅里叶变换、滤波器操作等,由于计算机的内部表示和运算精度,可能会导致一些微小的计算误差。
为了找出差异的原因,您可以尝试以下步骤:
- 检查输入数据:确保您自己编写的代码和调用内置函数的输入数据完全一致。
- 检查算法实现:仔细比较您自己编写的代码和MATLAB内置函数的实现,查看是否存在明显的差异。
- 逐步调试:逐步检查您的代码,确保每一步的计算结果都与预期相符。
- 简化问题:尝试使用简单的示例数据来提取MFCC特征,并逐步增加复杂性,以查看在哪个步骤出现了问题。
如果您能提供更多的信息,例如您自己编写的MFCC代码和调用MATLAB内置函数的具体代码片段,以及详细的输入数据和预期输出,我可能能够提供更具体的帮助。
解决 无用评论 打赏 举报