Изменение порядка с помощью Accelerate framework

Я хотел бы использовать библиотеки Accelerate Framework для сортировки данных (пары значений x и y).

Я использовал функцию vDSP_vsorti, чтобы найти вектор с индексами упорядочения данных x. Теперь я должен изменить порядок данных y в соответствии с порядком индексов сортировки x.

Как я мог это сделать? Существует ли в Accelerate Framework функция для переупорядочения вектора?

0

Решение

Можете ли вы использовать vDSP_vgathr? Этот API-интерфейс извлекает значения из вектора, используя другой вектор индексов.

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

Вот резюме:
Сбор одиночного вектора
Функции в этой группе используют либо индексы, либо указатели, хранящиеся в одном исходном векторе, для генерации нового вектора, содержащего выбранные элементы, либо из второго исходного вектора, либо из памяти.

vDSP_vgathr
Вектор собери; одинарная точность

декларация
СВИФТ

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)

Objective-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
Страйд для Б
__vDSP_C
Реальный выходной вектор с одинарной точностью
__vDSP_K
Страйд для C
__vDSP_N
Количество элементов для обработки
обсуждение
Выполняет следующую операцию:

Использует элементы вектора B в качестве индексов для копирования выбранных элементов вектора A в последовательные местоположения в векторе C. Обратите внимание, что 1, а не ноль, обрабатывается как первое местоположение во входном векторе при оценке индексов. Эта функция может быть выполнена только не на своем месте.

-1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector