2010-03-16 2 views
1

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

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

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

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

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

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

ответ

1

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

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

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

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