簡體   English   中英

不同形狀的本征矩陣的正則乘法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM