Microsoft Accelerator Divide Operation - PullRequest
1 голос
/ 16 марта 2010

Я хотел бы выполнить довольно простую операцию деления в Microsoft Accelerator:

X = P / (1 + K * O')

, где P, K и O - векторы, а K * O 'выполняет операцию скалярного произведения.

Я пытался PA.Divide(P, 1 + PA.Sum(PA.Multiply(K, O))), однако это не работает, поскольку выдает ошибку, говоря, что матрицы, поставляемые в команду деления, имеют разные измерения, что имеет смысл, поскольку второй аргумент должен быть просто скалярным.

Я справился с этим, преобразовав второй аргумент в массив, а затем используя его первый элемент, но это значительно замедляет вычисления.

Как я могу выполнить эту операцию без предварительного преобразования в массив?

1 Ответ

1 голос
/ 16 марта 2010

Я не знаю, какова дорогая мультипликативная инверсия в Accelerator, но вы можете использовать скалярное умножение, если переписываете свое выражение следующим образом:

X = P * (1 / (1 + K * O'))

Где 1 / (1 + K + O') - это просто мультипликативная инверсия скаляра, который вы уже вычисляете.

Это предполагает, что скалярное умножение доступно для вас (это должно быть - это фундаментальная операция). Но, конечно, я не знаком с ускорителем. Я просто говорю с точки зрения векторной математики.

...