特征:将数组映射到矩阵大小未知的矩阵

时间:2018-03-16 14:12:36

标签: c++ eigen

我想用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吗?

1 个答案:

答案 0 :(得分:2)

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

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