【发布时间】:2014-04-27 05:12:17
【问题描述】:
我有一个音频文件,它代表以 2500rpm 运行的电机的声音,我的目标是获得这个信号的周期,这样我就可以自动判断电机的速度是多少。为此,我获取信号的一部分并运行 get it autocorrelation ,希望这会告诉信号的周期!但我就是不明白: 这是我的代码的一部分:
clear;
clc;
[x0,Fs] = audioread('_2500.wav');
x= x0(1:2000,1);
xc = xcorr(x);
clf;
subplot(3,1,1);
plot(x);
subplot(3,1,2);
plot(xc);
[peaks,locs] = findpeaks(xc);
hold on
subplot(3,1,3)
plot(xc(locs),'ro');
这里是情节:
我应该如何考虑采样频率,即:44100?
【问题讨论】:
-
堆栈宇宙中有很多类似问题的答案。正如答案所建议的那样,可能的解决方案不止一种,但许多人认为最直观的一种方法是在频域中找到峰值。我写了一篇关于这种方法的博客文章:blog.bjornroche.com/2012/07/…
标签: matlab audio signal-processing