Каков наилучший (под которым я подразумеваю самый быстрый и / или наиболее эффективный) способ выполнения кругового сдвига на двумерном массиве Eigen?
Например, я хотел бы циклически сдвинуть ArrayXXd
направо.Я думаю, что могу сделать что-то вроде следующего:
circShiftRight (ArrayXXd &arraytoshift)
{
Matrix<double, Dynamic, 1> tmp;
tmp = arraytoshift.col (arraytoshift.cols ()-1);
arraytoshift.rightCols(_radForceVelocity.cols()-1) = arraytoshift.leftCols(_radForceVelocity.cols()-1).eval ();
arraytoshift.col(0) = tmp;
}
но будет ли это работать и есть ли лучший способ?Я предполагаю, что .eval()
необходимо, чтобы избежать Aliasing .Я новичок в использовании Eigen Library.