使用Accelerate框架重新排序

时间:2015-06-24 21:15:14

标签: c++ accelerate-framework vdsp

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

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

我怎么能这样做?在Accelerate Framework中是否存在一个函数来重新排序向量?

1 个答案:

答案 0 :(得分:-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(而非零)被视为输入向量中的第一个位置。此功能只能在不适当的位置完成。