MatLab to Eigen — скаляр возводится в степень матрицы

У меня есть следующий код в MatLab, который я хотел бы портировать на C ++ в идеале с собственной библиотекой:

N(:,i)=2.^L(:,i)+1;

Где L — симметричная матрица (1,2; 2,1), а диагональные элементы — все одно.

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

http://eigen.tuxfamily.org/dox-devel/unsupported/group__MatrixFunctions__Module.html#matrixbase_exp

Есть что-то, чего мне не хватает?

0

Решение

Если вы действительно хотите поднять произвольный скаляр до степени матрицы, вы должны использовать тождество a^x = exp(log(a)*x),
Тем не менее, Matlab .^ Оператор вычисляет поэлементную мощность. Если вы хотите то же самое в Eigen, используйте соответствующий Array функциональность:

N.col(i) = pow(2.0, L.col(i).array()) + 1.0;

Помните, что Eigen начинает индексировать с 0, а Matlab начинается с 1, поэтому вам может потребоваться заменить i от i-1,

0

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

Других решений пока нет …

По вопросам рекламы [email protected]