PDA

查看完整版本 : MATLAB中的节拍提取


poster
2019-12-14, 20:38
我没有MATLAB的经验,但是不幸的是我的项目是MATLAB的。

基本上,目标是将音乐源(最好是mp3格式,但.wav也可以)读入MATLAB,然后应用低通滤波器,以使其滤除节拍以外的所有内容。然后,它应该获取每个节拍发生的时间,并将结果写入文本文件。



回答:

我认为使用.wav文件要容易得多,尽管Matlab很好地具有处理此类问题的实用程序,但实际上确实如此: 读取.wav (http://www.mathworks.com/help/techdoc/ref/wavread.html)

实现低通滤波器的最简单方法是移动平均滤波器。

最简单的方法是遍历数据并取每组n个值的平均值。我不确定截止频率将如何取决于n,但是您可以尝试一下。

否则,我知道有一个用于Octave的信号处理工具包,我认为Matlab具有内置的过滤器功能: https (https://ccrma.stanford.edu/~jos/fp/Matlab_Filter_Implementation.html) : //ccrma.stanford.edu/~jos/fp/Matlab_Filter_Implementation.html (https://ccrma.stanford.edu/~jos/fp/Matlab_Filter_Implementation.html)

最重要的第三种方法是执行FFT并在频域中进行滤波。

一旦获得了信号的低频部分,您就可以检查样本是否超过幅度阈值,并输出在数据中找到这些样本的位置。



更多&回答... (https://stackoverflow.com/questions/4619903)