【问题标题】:Smoothing signal from microphone - Hearthbeat平滑来自麦克风的信号 - 心跳
【发布时间】: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


【解决方案1】:

测量时出现的噪声频率很高。您应该过滤您的信号,即您应该保留信号的低频部分并抑制信号的高频部分。你可以做到,制作一个低通滤波器。例如,它可以是一阶惯性模型。我建议制作一个直到 ~~10 kHz 的通带,因为人们听到的声音从 2 kHz 到 20 kHz。然后适当的采样时间为 0,0001 秒(0,1 毫秒)。离散模型有如下方程:

y[k] = 0.9048*y[k-1] + 0.09516*u[k-1],

其中 u 是一个测量向量(直接来自麦克风,在我们的过滤器中输入), 并且 y 是您要分析的向量(因此从我们的过滤器输出)。

如您所见,您可以计算一个样本号 1,您可以将 0 分配给样本号 0。毕竟,您可以尝试绘制 y 向量。

【讨论】:

  • 您好 Rafal,非常感谢您提供的方程式。我试图在我的代码中实现它,虽然我的应用程序只运行了一次,但情节线非常清晰。棒极了!但它一直在崩溃,netcat 什么也没给出,所以我不知道为什么,这是我的新注释代码。
  • 我很高兴你开心。您的注释代码在哪里?我没看到。
  • pastebin.com/egJUtw61 。我希望当我将它粘贴到 pastebin 时它不会介意。我直接在这里粘贴时遇到了一些麻烦。没有方程式的情况下它是如何工作的,我不知道它会在哪里遇到一些麻烦。
  • 但是告诉我,有什么问题吗?对吗?
  • 现在它的工作就像一个魅力,我做了一些小调整。非常感谢拉法尔!我以为这会很难,但它是如此容易!干杯人。
猜你喜欢
  • 2023-04-07
  • 2013-02-15
  • 2017-02-25
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2018-03-26
相关资源
最近更新 更多