Создание матрицы по некоторым правилам - PullRequest
0 голосов
/ 12 июня 2018

Как создать следующую матрицу, имеющую m строки и n столбцы?

1st row      1   2   3   L   n-1 n
2nd          2   3   4   L   n   1
3rd          3   4   5   n-1 1   2
Nth          M   M   M  ....
N-1          m-1 m   m+1  L  m-3 m-2
last         m   m+1 m+2  l  m-2 m-1

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Сложно сказать по вашему описанию, но, похоже, вы хотите создать матрицу, в которой первая строка равна 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
0 голосов
/ 12 июня 2018

Это похоже на ганкелеву матрицу .Вы должны использовать синтаксис с двумя входами для него,

H = hankel(c,r)

Так, например, с m = 4 и n = 5 мы получаем:

m = 4; n = 5;
X = hankel( 1:m, m:m+n-1 )

X =

     1     2     3     4     5
     2     3     4     5     6
     3     4     5     6     7
     4     5     6     7     8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...