arduino矩阵乘法和特征值不工作
我知道使用arduino矩阵乘法和特征值不工作,arduino,eigen,arduino-ide,Arduino,Eigen,Arduino Ide,我知道使用#include和#include让艾根与Arduino一起工作是一种非常古老的方法,可以让艾根工作 因此,我也尝试了#include #包括: #包括: #包括 只有在Arduino的IDE中实际编译的#include和#include。我实际上是版本1.6.20的AVR Boards包,我们可以在工具中修改BoardBoard Manager 当我开始做一些基本的操作来测试特征值时,比如添加矩阵和初始化矩阵。然后我注意到,每当我乘以2个矩阵时,无论我使用什么方法(我尝试了Ei
#include
和#include
让艾根与Arduino一起工作是一种非常古老的方法,可以让艾根工作
因此,我也尝试了#include
#包括
:
#包括
:
#包括
只有在Arduino的IDE中实际编译的#include
和#include
。我实际上是版本1.6.20
的AVR Boards包,我们可以在工具中修改BoardBoard Manager
当我开始做一些基本的操作来测试特征值时,比如添加矩阵和初始化矩阵。然后我注意到,每当我乘以2个矩阵时,无论我使用什么方法(我尝试了Eigen文档中建议的作为最佳实践的每一种方法),程序都会被卡在特定的指令中。
以下是一个例子:
#include <stlport.h>
#include <Eigen30.h>
#include <Eigen/Dense>
using namespace Eigen;
void setup()
{
Serial.begin(9600);
delay(2000);
Serial.print("Hi");
Matrix3f m;
MatrixXf b(2,2);
MatrixXf M1(2,2); //EDIT: I missed this last time.
MatrixXf matA(2, 2);
m << 1, 2, 3,
4, 5, 6,
7, 8, 9;
matA << 1, 2,
1, 2;
b = matA;
print_mtxf(b); // Goes ok
print_mtxf(matA); // Goes ok
Serial.print("M1:\n"); // Goes ok
M1.noalias() = matA*b; // Something wrong is going on here.
print_mtxf(M1); // Nerver gets to print this or the following
Serial.print("M1:\n");
Serial.print("M1:\n");
}
void loop()
{
}
void print_mtxf(const Eigen::MatrixXf &X)
{
int i, j, nrow, ncol;
nrow = X.rows();
ncol = X.cols();
Serial.print("nrow: "); Serial.println(nrow);
Serial.print("ncol: "); Serial.println(ncol);
Serial.println();
for (i=0; i<nrow; i++)
{
for (j=0; j<ncol; j++)
{
Serial.print(X(i,j), 6); // print 6 decimal places
Serial.print(", ");
}
Serial.println();
}
Serial.println();
}
#包括
#包括
#包括
使用名称空间特征;
无效设置()
{
Serial.begin(9600);
延迟(2000年);
串行打印(“Hi”);
基质x3f-m;
矩阵b(2,2);
MatrixXf M1(2,2);//编辑:上次我错过了这个。
matrixf-matA(2,2);
m什么是M1
?确保发布您试图编译的实际代码。此外,它是如何失败的?它是否陷入无限循环?它是否崩溃/断言?此外,首先尝试只包含(我猜它已经包含在“Eigen30.h”
中)。如果你能成功,请尝试其他模块,并向维护Eigen30.h
的人报告你遇到的问题。或者,尝试最新的Eigen版本,并报告你在任何Eigen支持频道收到的问题。很抱歉,M1是另一个矩阵,我错过了粘贴该部分代码。不知道发生了什么。你知道吗u尝试删除#include
?使用Matrix2f
代替MatrixXf
是否有效?如果使用最新的Eigen/Core
代替Eigen30.h
(带或不带第一个include(stlport.h
)?什么是M1
?确保发布您试图编译的实际代码。此外,它是如何失败的?它是否陷入无限循环?它是否崩溃/断言?此外,首先尝试只包含(我猜它已经包含在“Eigen30.h”
中)。如果你能成功,请尝试其他模块,并向维护Eigen30.h
的人报告你遇到的问题。或者,尝试最新的Eigen版本,并报告你在任何Eigen支持频道收到的问题。很抱歉,M1是另一个矩阵,我错过了粘贴该部分代码。不知道发生了什么。你知道吗u尝试删除#include
?使用Matrix2f
代替MatrixXf
是否有效?如果使用最新的Eigen/Core
代替Eigen30.h
(带或不带首次include(stport.h
),会发生什么情况?