Сложно сказать по вашему описанию, но, похоже, вы хотите создать матрицу, в которой первая строка равна 1:n
, а каждая последующая строка представляет собой круговой сдвиг влево от предыдущей строки.Если это так, вы все равно можете использовать hankel
для этого (как Dev-iL упоминает в их ответ ), но включить операцию остатка следующим образом:
n = 5;
m = 8;
mat = rem(hankel(0:(m-1), (m-1):(m+n-2)), n)+1
mat =
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2