MATLAB - 如何在wav文件中找到峰值

时间:2016-03-15 11:55:17

标签: matlab audio max signal-processing

我正在尝试查找.wav文件的峰值并使用findpeaks方法

a = audioread('FilterNew.wav');
[pks,locs] = findpeaks(a)

但是当我运行脚本时,它给了我3个错误

使用findpeaks时出错 预期Y是一个向量。

findpeaks> parse_inputs出错(第189行) validateattributes(阴,{ '数字'},{ '非空', '真实', '载体'},...

findpeaks出错(第131行) [y,yIsRow,x,xIsRow,minH,minP,minW,maxW,minD,minT,maxN,sortDir,annotate,refW] ...

我尝试使用谷歌搜索,但我没有找到任何答案,所以我希望在这里得到一些帮助。代码有什么问题?或者是我的.wav文件已损坏?!?

谢谢

由于数学家1975,管理绘制图表。

现在,我正在尝试绘制峰值图形并标记左右两侧的峰值但是它给出了一个错误 使用绘图时出错 矢量必须是相同的长度

所以我检查了尺寸

>> size(a(1,:))

ans =

     1     2

>> size(a(:,2))

ans =

      467712           1

我的代码

a = audioread('FilterNew.wav');
[pks,locs] = findpeaks(a(:,1));

[pks2,locs2] = findpeaks(a(:,2));

 figure
 x = (1:length(a));
 plot(x,a,'k');

 figure
 z = (1:length(a));
 plot(z,a,'k');

 hold on
 plot(locs,pks,'go');

 hold on
 plot(locs2,pks2,'ro');

enter image description here

我该如何解决?再次感谢你!

1 个答案:

答案 0 :(得分:1)

在Matlab 2015a中,函数audioread()的输出是双重的,矩阵和采样频率。只需输入:

a = audioread('filename.wav');

应返回音频样本矩阵。 Findpeaks()需要一个向量,因此您只需要选择矩阵中的哪一列数据就是您感兴趣的那个:

[pks,locs] = findpeaks(a(:,1));