有没有一种简单的方法可以在Eigen中构造5对角矩阵?我可能可以运行循环并分配对角线和零,但我确实遇到了Diagonal ,只是不确定如何将其用于5个对角线而不是一个。有任何想法吗?编辑:想通了这个!对于那些想知道的人;您可以使用matrix.diagonal(+n) = vector;matrix.diagonal(-n) = vector;访问矩阵的上/下对角线并用矢量覆盖它们。一般的侧面问题:在C ++中运行for循环时,是否可以跳过分配?例如:int n; //size of matrixMatrixXd m(n,n); //nxn matrixfor(int i=0; i<n; i++){ m(i,i) = 5; m(i,i+1) = 6; m(i,i-1) = 4; m(i,i+2) = 7; m(i,i-2) = 3;}for (int i=0; i<n; i++){ for(int j=0; j<n; j++) { if(m(i,j) = something) //I want the loop to skip m(i,j) where break; //i have already allocated values to m(i,j) //How do I do that, in general, in C++? else { m(i,j) = 0;} } }谢谢 最佳答案 听起来您想跳过对角线,因为它们已被初始化(此处分配的术语不正确)。查看设置对角线的循环,可以看到所设置的每个(i,j)都遵循abs(i-j) <= 2。例如,当您设置元素(i, i+2) -> abs(i-(i+2)) -> abs(-2) -> 2小于或等于2时。因此,第二个循环中的条件应为:if (abs(i-j) <= 2) continue;//break will exit the loop, continue will skip to the next iteration关于c++ - 5个对角矩阵和for循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55243583/ 10-12 19:33