相关疑难解决方法(0)

实时时间序列数据中的峰值信号检测


更新:迄今为止 表现最佳的算法就是这个算法.


该问题探讨了用于检测实时时间序列数据中的突然峰值的稳健算法.

请考虑以下数据集:

p = [1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0.9 1 1.1 1 1 0.9 1, ...
     1.1 1 1 1.1 1 0.8 0.9 1 1.2 0.9 1 1 1.1 1.2 1 1.5 1 3 2 5 3 2 1 1 1 0.9 1 1 3, ... 
     2.6 4 3 3.2 2 1 1 0.8 4 4 …
Run Code Online (Sandbox Code Playgroud)

language-agnostic algorithm signal-processing time-series data-analysis

195
推荐指数
18
解决办法
14万
查看次数

如何在php中检测一首歌的BPM

如何以编程方式确定歌曲的速度/ BPM?常用的算法是什么,必须考虑哪些因素?

algorithm audio signal-processing beat-detection

77
推荐指数
6
解决办法
9万
查看次数

用于查找歌曲音调的音频分析器

无论如何都要以编程方式分析音频音高.例如,我知道大多数玩家都会显示一个图形或条形图,如果歌曲音高在@时间t很高,那么条形图会在时间t上升......就像这样.是否有任何实用程序/工具/ API来确定歌曲音高,以便我们将其插入到向上和向下的条形图中.

谢谢你的帮助

c++ java iphone

1
推荐指数
1
解决办法
2404
查看次数

FFT问题(返回随机结果)

我有这个代码,但它会随机返回0到1050左右的随机频率.请你帮我理解为什么会这样.

我的数据长度为1024,采样率为8192,数据是一个填充了麦克风输入数据的短阵列.


float *iSignal = new float[2048];
float *oSignal = new float[2048];
int pitch = 0;

for(x=0;x<=1024;x++) {
    iSignal[x] = data[x];
}

fft(iSignal,oSignal,1024); //Input data, output data, length of input and output data

for(int y=0;y< 2048;y+=2) {
if((pow(oSignal[y],2)+pow(oSignal[y+1],2))>(pow(oSignal[pitch],2)+pow(oSignal[(pitch)+1],2))) {
        pitch = y;
    }
}

double pitchF = pitch / (8192.0/1024);
printf("Pitch: %f\n",pitchF);
Run Code Online (Sandbox Code Playgroud)

谢谢,

尼尔.

编辑:更改了代码,但它仍然返回随机频率.

c c++ fft

1
推荐指数
1
解决办法
2067
查看次数