Sam*_*hah 2 arrays interpolation linear-interpolation accelerate-framework swift
我有一系列采样不均匀的指标。我想将这些指标线性插值和上采样到特定的采样频率。我尝试过使用 Accelerate Framework 和 SIMD 框架,但我不太确定该怎么做。
问题本身如下:
let original_times:[Double] = [0.0, 2.0, 3.0, 6.0, 10.0]
let original_values: [Double] = [50.0, 20.0, 30.0, 40.0, 10.0]
let new_times:[Double] = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找一种通过某种线性插值方法找到 new_values 的方法。
vDSP_vgenpD将为您完成这项工作。将原始时间和值传递给它,它将用插值填充一个数组。例如:
import Accelerate
let original_times:[Double] = [0.0, 2.0, 3.0, 6.0, 10.0]
let original_values: [Double] = [50.0, 20.0, 30.0, 40.0, 10.0]
var new_values = [Double](repeating: 0,
count: 11)
let stride = vDSP_Stride(1)
vDSP_vgenpD(original_values, stride,
original_times, stride,
&new_values, stride,
vDSP_Length(new_values.count),
vDSP_Length(original_values.count))
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式获取时间/值元组数组:
let result = new_values.enumerated().map{ return $0 }
Run Code Online (Sandbox Code Playgroud)
看起来像:
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |