使用Accelerate框架重新排序

Reordering with Accelerate framework

本文关键字:排序 新排序 Accelerate 框架 使用      更新时间:2023-10-16

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

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

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

你能使用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(而不是零)被视为输入向量中的第一个位置。此功能只能在不合适的位置执行。