簡體   English   中英

如何使用 boost uBLAS 填充在 c++ 中創建的矩陣?

[英]How do I fill matrices created in c++ using boost uBLAS?

總的來說,我是 C++ 的新手。 我有一個任務,我需要使用 boost uBLAS 庫創建一個具有設置常量值的 5x5 矩陣。 然后我必須使用 boost uBLAS 將這些矩陣相乘。

到目前為止我有:

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>

    using namespace boost::numeric::ublas;

int main()
{
    matrix<double> m1 (5, 5);
    vector<double> v1 (5);
    std::cout << m1;
    std::cout << v1;
}

所以基本上我創建了 5x5 矩陣和一個向量,它們都用零填充。 我如何用我想要的數字填充矩陣和向量,以便(例如):

m1 = [2,1,4,6,3;
      8,2,0,1,4;
      7,3,2,4,7;
      1,2,0,9,3;
      2,6,4,3,1]

v1 = [2;
      3;
      1;
      7;
      6]

您可以使用 uBlas 賦值運算符 <<=:

#include <boost/numeric/ublas/assignment.hpp>

然后例如

m1 <<= 2,1,4,6,3,
       8,2,0,1,4,
       7,3,2,4,7,
       1,2,0,9,3,
       2,6,4,3,1;

v1 <<= 2,
       3,
       1,
       7,
       6;

std::cout << "m1: " << m1 << "\n";
std::cout << "v1: " << v1 << "\n";

在 Coliru 現場觀看

#include <boost/numeric/ublas/assignment.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/vector.hpp>

using namespace boost::numeric::ublas;

int main() {
    matrix<double> m1(5, 5);
    vector<double> v1(5);
    std::cout << "m1: " << m1 << "\n";
    std::cout << "v1: " << v1 << "\n";

    m1 <<= 2,1,4,6,3,
           8,2,0,1,4,
           7,3,2,4,7,
           1,2,0,9,3,
           2,6,4,3,1;

    v1 <<= 2,
           3,
           1,
           7,
           6;

    std::cout << "m1: " << m1 << "\n";
    std::cout << "v1: " << v1 << "\n";
}

印刷

m1: [5,5]((0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0),(0,0,0,0,0))
v1: [5](0,0,0,0,0)
m1: [5,5]((2,1,4,6,3),(8,2,0,1,4),(7,3,2,4,7),(1,2,0,9,3),(2,6,4,3,1))
v1: [5](2,3,1,7,6)

暫無
暫無

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

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