[英]Regular Multiplication of different shaped Eigen Matrices
我有一個Nx3特征矩陣。 我有一個Nx1 Egein marix。 我試圖將Nx3中每一行的系數乘以Nx1中相應的標度,以便可以縮放一堆3d向量。
我敢肯定,我忽略了一些顯而易見的事情,但我無法使其正常工作。
#include <Eigen/Dense>
MatrixXf m(4, 3);
m << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;
MatrixXf dots(4, 1)
dots << 2,2,2,2;
我想像這樣使矩陣為Nx3:
2,4,6
8,10,12,
14,16,18,
20,22,24
您可以使用廣播:
m = m.colwise().cwiseProduct(dots);
或觀察到您要做的就是應用非均勻縮放:
m = dots.asDiagonal() * m;
這兩個表達式將生成相似的代碼。
好吧,我有工作了。 我可能做錯了什么,但這對我有用,所以我想我會分享。 一周前,我寫了第一行C ++,因此我覺得自己應該得到一些寬限。 鼓勵具有更好解決方案的任何人發布。
// scalar/coefficient multiplication (not matrix) on Nx3 x N. For multiplying dot products by vectors
void N3xNcoefIP(MatrixXf &A, MatrixXf &B) {
A.array() *= B.replicate(1, A.size()).array();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.