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
),会发生什么情况?