【问题标题】:Eigen: Mapping an array to matrix with matrix size unknown特征:将数组映射到矩阵大小未知的矩阵
【发布时间】:2018-03-16 14:12:36
【问题描述】:

我想用 Eigen 读取 MNIST 数据集,每个文件由一个矩阵表示。我希望在运行时确定矩阵大小,因为训练集和测试有不同的大小。

Map<Matrix<uchar,rows,cols,RowMajor>> MNIST_dataset((uchar*)*_dataset);

但是得到以下错误:

NIST_Read.cpp:43:26: error: the value of 'rows' is not usable in a constant expression
     Map<Matrix<uchar,rows,cols,RowMajor>> MNIST_dataset((uchar*)*_dataset);
                      ^~~~

Eigen::Map 可以这样使用吗?

【问题讨论】:

    标签: c++ eigen


    【解决方案1】:

    我们需要知道rows 是什么,但如果你想将它用作模板参数,它必须是constexpr variable(或文字整数的宏,但我们不要这样做)。但是,您说您需要在运行时确定矩阵大小,因此您需要使用Dynamic 作为数字或行并在构造函数中指定值:

    Map<Matrix<uchar,Dynamic,cols,RowMajor>> MNIST_dataset((uchar*)*_dataset, rows, cols);
    

    【讨论】:

    • 是的,我应该在这里使用 Dynamic,它现在可以完美运行,谢谢!
    • @Mindong 我很高兴它对你有用。如果您认为答案解决了您的问题,请考虑marking it as accepted
    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 2013-05-16
    • 2015-04-27
    相关资源
    最近更新 更多