gpt4 book ai didi

c++ - 如何根据传递给函数的变量定义特征矩阵大小

转载 作者:太空狗 更新时间:2023-10-29 22:55:33 25 4
gpt4 key购买 nike

我正在尝试编写需要根据输入定义矩阵大小的代码。显示问题的代码的精简版本是:

 #include <iostream>
#include "eigen/Eigen/Dense"
#include <cmath>

using namespace Eigen;

void matrixname( const int numbRow, const int numbcol);

int main()
{
const int numbRow=5;
const int numbCol=3;

matrixname(numbRow,numbCol);
return 0;
}

void matrixname( const int numbRow, const int numbCol)
{
Matrix<double,numbRow,numbCol> y;
}

尝试编译代码时,返回以下错误:

/main.cpp:20:15: 错误:非类型模板参数不是常量表达式

构建在尝试定义 y 的最后一行中断。

有什么方法可以修改变量的声明或传递,以便能够以这种方式定义矩阵的大小?

最佳答案

根据 documentation ,如果您在编译时不知道矩阵的大小,则需要将矩阵大小模板参数用作 Eigen::Dynamic

因此您可能必须按如下方式修改您的函数:

void matrixname(  const int numbRow, const int  numbCol)
{
Matrix<double,Eigen::Dynamic,Eigen::Dynamic> y1(numbRow, numbCol);

// Eigen also provides a typedef for this type
MatrixXd y2(numbRow, numbCol);
}

关于c++ - 如何根据传递给函数的变量定义特征矩阵大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51162005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com