簡體   English   中英

將標量添加到特征矩陣(向量)

[英]Adding scalar to Eigen matrix (vector)

我剛開始使用 Eigen 庫,不明白如何為所有矩陣的成員添加標量值?

假設我有一個矩陣:

Eigen::Matrix3Xf mtx = Eigen::Matrix3Xf::Ones(3,4);
mtx = mtx + 1;    // main.cxx:104:13: error: invalid operands to binary expression ('Eigen::Matrix3Xf' (aka 'Matrix<float, 3, Dynamic>') and 'int')

我希望得到的矩陣將填充 2

使用 Eigen 的元素操作最好在Array域中完成。 你可以做

mtx.array() += 1.f;

稍微詳細一點的選項是:

mtx += Eigen::Matrix3Xf::Ones(3,4);

您還應該首先考慮將mtx定義為Array3Xf

Array3Xf mtx = Eigen::Array3Xf::Ones(3,4);
mtx += 1.f;

如果您隨后需要將mtx用作矩陣(即,在矩陣乘積中),您可以編寫

Vector3f v = mtx.matrix() * w; 

快速搜索這個庫的文檔,似乎沒有這樣的方法。 事實上,矩陣代數一般沒有標量和。 您可以自己實現這樣的方法,只需將標量添加到遍歷所有列和行的每個矩陣 i,j 組件即可。

但是,您確定您不是要進行標量乘法嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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