【问题标题】:how to convert a matrix in dlib to a std::vector如何将 dlib 中的矩阵转换为 std::vector
【发布时间】:2016-12-10 13:22:59
【问题描述】:

我在 dlib 中定义了一个列向量。如何将其转换为 std::vector?

typedef dlib::matrix<double,0,1> column_vector;
column_vector starting_point(4);
starting_point = 1,2,3,4;
std::vector x = ??

谢谢

【问题讨论】:

    标签: c++ dlib


    【解决方案1】:

    有很多方法。您可以通过 for 循环复制它。或者使用带有迭代器的 std::vector 构造函数:std::vector&lt;double&gt; x(starting_point.begin(), starting_point.end())

    【讨论】:

    • 谢谢。但不应该是 std::vector x(starting_point.begin(), starting_point.end()) 吗?
    【解决方案2】:

    这将是您通常迭代矩阵的方式(如果矩阵只有 1 列则无关紧要):

    // loop over all the rows
    for (unsigned int r = 0; r < starting_point.nr(); r += 1) {
        // loop over all the columns
        for (unsigned int c = 0; c < starting_point.nc(); c += 1) {
            // do something here
        }   
    }
    

    那么,为什么不遍历列向量并将每个值引入新的std::vector?这是一个完整的例子:

    #include <iostream>
    #include <dlib/matrix.h>
    
    typedef dlib::matrix<double,0,1> column_vector;
    
    int main() {
        column_vector starting_point(4);
        starting_point = 1,2,3,4;
    
        std::vector<double> x;
    
        // loop over the column vector
        for (unsigned int r = 0; r < starting_point.nr(); r += 1) {
            x.push_back(starting_point(r,0));
        }
    
        for (std::vector<double>::iterator it = x.begin(); it != x.end(); it += 1) {
            std::cout << *it << std::endl;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2015-03-25
      相关资源
      最近更新 更多