0

データ (x 値と y 値のペア) の並べ替えに Accelerate Framework ライブラリを使用したいと考えています。

関数 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

概要は次のとおりです。 単一ベクトル収集 このグループの関数は、1 つのソース ベクトル内に格納されたインデックスまたはポインターを使用して、2 番目のソース ベクトルまたはメモリから選択された要素を含む新しいベクトルを生成します。

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 に答える