Сдвиг строк и столбцов в 3D-матрице - PullRequest
0 голосов
/ 02 декабря 2018

Предположим, что у меня есть следующий кусок кода на C ++.Я объявляю матрицу размером 3x3x4, что означает, что у меня есть четыре 2D матрицы размером 3x3.Я хочу сместить строки и столбцы в каждой 2D-матрице большой 3D-матрицы.Я использовал функцию rotate, но, похоже, она работает только в последнем измерении, т.е. я могу переключаться между 2D-матрицами, но не внутри 2D-матриц.Есть ли способ использовать rotate для смещения 1-го и 2-го измерений с использованием стандартных библиотек C ++?

Примечание: То, чего я хочу достичь, похоже на то, что функция circshift(A,K) делает в Matlab.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{

 double test[3][3][4] = { { {1, 4, 7, 4}, {2, 5, 8, 4}, {3, 6, 9, 4} },
  { {1, 4, 7, 4}, {2, 5, 8, 4}, {3, 6, 9, 4} },
  { {1, 4, 7, 4}, {2, 5, 8, 4}, {3, 6, 9, 4} } };   

std::cout << "Matrix shifted" << std::endl;
for (uint16_t i = 0; i < 3; i++)
{
    for (uint16_t j = 0; j < 3; j++)
    {
        std::rotate(test[i][j], test[i][j] + 1, test[i][j] + 4);   
    }
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...