C++ 中利用矩阵作为参数定义函数
各位大神,我是C++新手,现在想在C++中利用Eigen库编写关于矩阵计算的函数.其中的矩阵为函数参数,矩阵的行数固定,列数变化(我网上查了,矩阵第二维不变)。以下程序是...
各位大神,我是C++新手,现在想在C++中利用Eigen库编写关于矩阵计算的函数.其中的矩阵为函数参数,矩阵的行数固定,列数变化(我网上查了,矩阵第二维不变)。以下程序是我在R中实现的,请问如何将其转化成C++中的程序。谢谢
展开
1个回答
展开全部
如果矩阵列数不固定,则不适宜用矩阵作为函数参数,这时可以用指针(即一维数组)和行列数作为函数参数,在函数中将一维数组映射为二维数组,例如:
函数原型为:
T1 fun(T2 *a, int r, int c ); // a为一维数组(接收二维数组首元素地址),r 和c分别为行列数
函数体中用 *(a+i*c+j) 表示二维数组第 i 行第 j 列的元素。
调用该函数的语句为:
fun(&arr[0][0], R, C ); // arr为二维数组,R 和C分别为行列数。
函数原型为:
T1 fun(T2 *a, int r, int c ); // a为一维数组(接收二维数组首元素地址),r 和c分别为行列数
函数体中用 *(a+i*c+j) 表示二维数组第 i 行第 j 列的元素。
调用该函数的语句为:
fun(&arr[0][0], R, C ); // arr为二维数组,R 和C分别为行列数。
更多追问追答
追问
谢谢你的回答,因为参数矩阵的行数固定,列数不固定,我是不是可以先将矩阵转置后的矩阵作为函数的参数呢?
追答
那当然可以,只不过这样以来在函数体中对数组处理的难度可能要增大许多。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询