首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MATLAB中执行fft时出错

在MATLAB中执行fft时出错
EN

Stack Overflow用户
提问于 2013-03-06 14:41:02
回答 1查看 192关注 0票数 1

我拿了一个文件,这是一个干净的,重复的F2音符波形(我通过在虚拟钢琴上演奏F2和在钢琴上演奏wave fle,并进行比较得出了这一点)。当我对信号进行快速傅立叶变换时,通过对保存的wav文件进行波形读取,我得到了176.4 Hz的峰值频率,这比音符F2的正确频率低了一个八度。

当我分析另一个音符时,这次是从物理钢琴上录制的,我得到了完全相同的峰值频率。这怎麽可能?MATLAB有可能在内存中存储多个文件的峰值频率吗?如果是这样,我该如何解决这个问题?

另外,当我们分析一首完整的歌曲,即包含许多音符的wav文件时,我们得到了许多峰值,这证实了我们并没有使用相同的图表来处理所有事情。

EN

回答 1

Stack Overflow用户

发布于 2013-03-07 00:24:30

这不是Matlab的FFT中的错误。

音高不同于峰值频率。这是一种心理声学现象。人类将听到的单个音高的声音可以包含许多频率峰值,其中最强的频谱频率峰值可能是以完全不同的音高类别为中心的泛音,和/或具有比感知音高更高的八度。有一些书籍涵盖了这一主题,如听力学和声音感知的神经心理学。一本关于音乐物理学的书可能会解释为什么钢琴会创造出更丰富、更复杂的频谱内容。

要找到基音,需要使用pitch detection/estimation算法,而不仅仅是FFT。使用这些关键字搜索此处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15240686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档