使用iOS Accelerate Framework进行数据平滑

时间:2015-06-17 15:51:58

标签: ios

有没有人指出使用Accelerate Framework进行数据平滑......?我希望根据加速度计的输入来平滑数据。我目前对传入的加速度计数据点进行一些基本过滤,然后将数据传递给函数,然后根据此函数执行一些计算。然后,我想对处理过的数据进行一些平滑的数据。

我目前有一个原型,它使用Python库对结果数据执行Savitzky-Golay过滤器。然后我使用我的应用程序中的输出。我的原型很好地计算数据,但我想在Objective-C / Swift中做到这一点。出于性能原因,我还想使用Accelerate Framework。到目前为止,我还没有看到任何有关如何使用Accelerate Framework进行数据平滑的指示,因此我的问题。

如果有人有任何指示或文档,请告诉我。

谢谢,

Ĵ

2 个答案:

答案 0 :(得分:3)

您可能会使用vDSP_conv Apple Docu与Savitzky-Golay过滤器进行卷积。你不需要框架来创建内核,所以使用这个功能就足够了。

您可以在此处找到有关如何使用该功能的示例代码(您可能需要Apple开发人员凭据才能查看该代码) Apple Example Code

答案 1 :(得分:1)

我在项目中也有同样的需求。我有两个Double数组,它们包含线性编码器的时间和位置。位置受到干扰,所以我想使其平滑。

我进行了导入:

import Accelerate

然后使用功能vDSP.convolve()

var myTimes: [Double] = //populate with your data (aka x axis)
var myLengths: [Double] = //populate with your data (aka y axis)
    
let convTimes = vDSP.convolve(myTimes, withKernel: [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1])
let convLengths = vDSP.convolve(myLengths, withKernel: [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1])

就是这样,在Swift 5中。

原文:

Original data plotted

流畅:

Smooth data plotted