Есть ли более простой способ построить 5-диагональную матрицу в Eigen? Я, вероятно, могу бегать по циклам и распределять диагонали и нули, но я сталкивался с диагональю <>, но не знал, как использовать ее для 5 диагоналей вместо одной. Есть идеи? РЕДАКТИРОВАТЬ: понял это! Для тех, кто интересуется; Вы можете использовать
matrix.diagonal(+n) = vector;
matrix.diagonal(-n) = vector;
для доступа к супер / суб диагоналям матрицы и записи поверх них с помощью векторов.
Общий вопрос: есть ли способ пропустить выделение при запуске цикла for в C ++? Например:
int n; //size of matrix
MatrixXd m(n,n); //nxn matrix
for(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;}
}
}
Спасибо