0

我想使用 Accelerate Framework 库对数据(x 和 y 值对)进行排序。

我使用函数 vDSP_vsorti 来查找具有 x 数据排序索引的向量。现在我应该根据 x 排序索引顺序重新排序 y 数据。

我怎么能做到?Accelerate Framework 中是否存在重新排序向量的函数?

4

1 回答 1

-1

你可以使用 vDSP_vgathr 吗?此 API 使用另一个索引向量从一个向量中获取值。

https://developer.apple.com/library/mac/documentation/Accelerate/Reference/vDSPRef/index.html#//apple_ref/c/func/vDSP_vgathr

下面是一个总结: 单向量收集 该组中的函数使用存储在一个源向量中的索引或指针来生成一个新向量,该向量包含从第二个源向量或内存中选择的元素。

vDSP_vgathr 向量聚集;单精度。

声明 SWIFT

func vDSP_vgathr(_ __vDSP_A: UnsafePointer<Float>, _ __vDSP_B: UnsafePointer<vDSP_Length>, _ __vDSP_J: vDSP_Stride, _ __vDSP_C: UnsafeMutablePointer<Float>, _ __vDSP_K: vDSP_Stride, _ __vDSP_N: vDSP_Length)

目标-C

void vDSP_vgathr ( const float *__vDSP_A, const vDSP_Length *__vDSP_B, vDSP_Stride __vDSP_IB, float *__vDSP_C, vDSP_Stride __vDSP_IC, vDSP_Length __vDSP_N ); 参数 __vDSP_A
单精度实数输入向量 __vDSP_B
包含索引的整数向量 __vDSP_J
B 的步长 __vDSP_C
单精度实数输出向量 __vDSP_K
C 的步长 __vDSP_N
要处理的元素数 讨论 执行以下操作:

使用向量 B 的元素作为索引,将向量 A 的选定元素复制到向量 C 中的连续位置。请注意,在评估索引时,1,而不是零,被视为输入向量中的第一个位置。这个功能只能在不合适的地方完成。

于 2015-08-23T00:36:32.147 回答