Умножение векторной матрицы броненосца

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

"matrix multiplication: incompatible matrix dimensions: 1206x36 and 1x1206"
"matrix multiplication: incompatible matrix dimensions: 1206x36 and 1206x1"
"matrix multiplication: incompatible matrix dimensions: 1x1206 and 1206x36"
"matrix multiplication: incompatible matrix dimensions: 1206x1 and 1206x36"

person Dr. Jekyll    schedule 17.03.2017    source источник
comment
Предполагается, что второе измерение 1-й матрицы соответствует первому измерению 2-й матрицы, верно? (a x b * b x c). Это не выполняется из-за этих ошибок в строках: 1-я, 2-я и 4-я.   -  person Arash    schedule 17.03.2017
comment
Я в основном пробовал все комбинации. Я понимаю, как работает умножение матрицы на вектор.   -  person Dr. Jekyll    schedule 17.03.2017


Ответы (1)


Да, это возможно. Можете ли вы предоставить образец исходного кода, который использовался для создания вышеуказанных ошибок? Попробуйте следующее, все должно работать нормально.

arma::mat X ;
arma::vec beta ;

beta.resize ( 2 ) ;

beta (0) = 1.0 ;
beta (1) = 3.0 ;

X.resize ( 3, 2 ) ;

X (0,0) = 1.0 ;
X (0,1) = 2.0 ;
X (1,0) = 3.0 ;
X (1,1) = 4.0 ;
X (2,0) = 5.0 ;
X (2,1) = 6.0 ;

std::cout << X * beta << std::endl ;

Это также будет работать, если оба определены как тип «arma::mat», если размеры совместимы.

person Patrick Kelly    schedule 18.03.2017