如何在循环中更改特征矩阵的尺寸?

计算科学 C++ 矩阵 内存管理 本征 向量
2021-12-10 23:26:30

我有一个 while 循环,在其中我使用 Matrix A、向量Bx不同的维度:

int count=0;
while(true){
count+=1;

MatrixXd A(count,2*count);
VectorXd B(2*count);

// assignment of A, and B
//

VectorXd x = A.householderQr().solve(B);

// output of x

if (x.norm()>30)
break;

}

然而,以这种方式构建的程序总是崩溃。我尝试使用指向此类矩阵或向量的指针,并遇到了类似的失败。

我该如何处理这样的问题?

1个回答

你有一个大小不匹配的问题: A是一个count x 2*count矩阵,你正试图Ax=BB一个2*count x 1向量来解决。

此外,如果你在没有 的情况下编译-DNDEBUG,你应该得到一个很好的断言,告诉你这是错误的。

要调整矩阵或向量的大小:

A.resize(count, 2*count);
B.resize(count);