This question already has answers here:
Getting FFT peaks from data
(2个答案)
4年前关闭。
我正在尝试查找我的.wav文件的峰值,并已使用findpeaks方法
但是当我运行脚本时,它给了我3个错误
使用findpeaks时出错
期望Y为 vector 。
findpeaks> parse_inputs中的错误(第189行)
validateattributes(Yin,{'numeric'},{'nonempty','real','vector'},...
findpeaks中的错误(第131行)
[y,yIsRow,x,xIsRow,minH,minP,minW,maxW,minD,minT,maxN,sortDir,annotate,refW] ...
我曾尝试使用Google搜索,但未找到任何答案,因此希望在这里有所帮助。代码有什么问题?还是我的.wav文件已损坏?!?
谢谢
感谢mathematician1975,成功绘制了图表。
现在,我试图绘制峰图并标记左右两个峰,但这给了我一个错误
使用绘图时出错
vector 的长度必须相同
所以我检查了尺寸
我的密码
我该如何解决?再一次感谢你!
应该返回音频样本矩阵。 Findpeaks()需要一个 vector ,因此您只需要选择矩阵中要关注的数据列即可:
(2个答案)
4年前关闭。
我正在尝试查找我的.wav文件的峰值,并已使用findpeaks方法
a = audioread('FilterNew.wav');
[pks,locs] = findpeaks(a)
但是当我运行脚本时,它给了我3个错误
使用findpeaks时出错
期望Y为 vector 。
findpeaks> parse_inputs中的错误(第189行)
validateattributes(Yin,{'numeric'},{'nonempty','real','vector'},...
findpeaks中的错误(第131行)
[y,yIsRow,x,xIsRow,minH,minP,minW,maxW,minD,minT,maxN,sortDir,annotate,refW] ...
我曾尝试使用Google搜索,但未找到任何答案,因此希望在这里有所帮助。代码有什么问题?还是我的.wav文件已损坏?!?
谢谢
感谢mathematician1975,成功绘制了图表。
现在,我试图绘制峰图并标记左右两个峰,但这给了我一个错误
使用绘图时出错
vector 的长度必须相同
所以我检查了尺寸
>> 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');
我该如何解决?再一次感谢你!
最佳答案
在Matlab 2015a中,函数audioread()的输出是双重的,即矩阵和采样频率。只需输入:
a = audioread('filename.wav');
应该返回音频样本矩阵。 Findpeaks()需要一个 vector ,因此您只需要选择矩阵中要关注的数据列即可:
[pks,locs] = findpeaks(a(:,1));
07-24 09:39