【发布时间】:2015-04-14 17:35:25
【问题描述】:
我正在使用血氧计进行项目。我想把它弄平,这样我就可以用它来计算心跳。我正在从麦克风收集原始数据,我将它们放入新数组中,比如说sData[]。
信号真的很疯狂,并且按预期在整个情节中跳跃,所以我尝试使用移动平均线对其进行平滑处理。所以我的主要代码看起来像这样。
writeAudioDataToFile();
for (int a = 0; a < sData.length; a++) {
tempAvg += Math.abs(sData[a]);
if (a % numberOfSamplesAveraged == 0) { //Average from x samples
if (myIndex > SAMPLE_SIZE - 1) {
myIndex = 0;
}
tempAvg = tempAvg / numberOfSamplesAveraged;
if (tempAvg > 500) {
newDataArray[myIndex] = 500;
}else{
newDataArray[myIndex] = tempAvg;
} //This is suppose to clear the high peaks.
Log.d("isRecording - Average from " + numberOfSamplesAveraged + " numbers.", "newDataArray[" + myIndex + "] = " + newDataArray[myIndex]);
tempAvg = 0;
myIndex++;
}
}
notifier.notifyObservers();
Log.d("Notifier", "Notifier Fired!");
Thread.sleep(20); //Still experimenting with this value
它看起来很乱,但情节(我正在使用 AndroidPlot 顺便说一句)看起来不错,但它太不准确了,所以我无法从中计算出炉灶。它在“高”状态下有很多“反弹”。我在互联网上发现某种过滤器(也许是 IIR 过滤器)可以完成这项工作。所以我只想问你们我怎样才能获得一个漂亮的平滑图表? IIR 滤波器是否可行?有没有免费的小程序/库来平滑它? 这是我在这里的第一个问题,所以如果写得不好,我真的很抱歉。 如果您需要更多信息来帮助我,请询问。 这是我的图表现在的样子。
http://oi62.tinypic.com/2uf7yoy.jpg // 无法在此处发布新图片。
这是一个幸运的。 我需要更流畅的输出。
【问题讨论】:
-
能否添加剧情截图?我不知道如何回答这个问题,但我喜欢情节。
-
你去吧,我添加了一个情节截图。但我的情节很弱:(
-
下次请多注意您的标签。您选择了“信号”(用于软件中断)和“处理”(这是一种编程语言)而不是“信号处理”
标签: java android signal-processing microphone