matrix изменение вектора или матрицы в матрицу иных размеров

## Синтаксис

                y = matrix(v, m, n)
                y = matrix(v, m1, m2, m3, ..)
                y = matrix(v, [sizes])

## Аргументы

v

  вектор, матрица или гиперматрица

n, m, m1, m2, ..

  целые числа

sizes

  вектор целых чисел

y

  вектор, матрица или гиперматрица

## Описание

Для вектора или матрицы с элементами `n x m` команда `y=matrix(v,n,m)` или аналогичная `y=matrix(v,[n,m])` преобразует вектор (или матрицу) `v` в матрицу размерами `n x m` постолбцовой установкой элементов `v`.

Если один из размеров `m` или `n` равен -1, то он автоматически присваивается отношению `size(v,'*')` к другому размеру.

Для гиперматрицы такой, что `prod(size(v))==prod(sizes)` команда `y=matrix(v,sizes)` (или аналогичная `y=matrix(v,n1,n2,...nm)`) преобразует `v` в матрицу или гиперматрицу постолбцовой установкой (первый размер меняется первым) элементов `v`. `y=matrix(v,sizes)` даёт обычную матрицу, если размеры являются скалярами или двумерным вектором.

- `y = v(:)` эквивалентно `matrix(v,-1, 1)`
- `matrix()` может быть перегружена для любого типа `mlist()` с функцией, названной `%<type>_matrix(v,s,..)`, с, по крайней мере, двумя входными аргументами.

## Примеры

С обычной матрицей десятичных чисел:

    a = [1 3 5 7 9 11; 2 4 6 8 10 12]
    matrix(a, 4, 3)
    matrix(a, [3 4])
    matrix(a, 3, -1)
    // в гиперматрицу:
    matrix(a, 3, 2, 2)

С текстами:

    t = strsplit("a":"x",1:23)'
    matrix(t,[3,8])

    --> t = strsplit("a":"x",1:23)'
     t  =
    !a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  !

    --> matrix(t,[3,8])
     ans  =
    !a  d  g  j  m  p  s  v  !
    !b  e  h  k  n  q  t  w  !
    !c  f  i  l  o  r  u  x  !

С гипермассивом cell-элементов:

    c = makecell([2,3,2], %t,%z, %i,"abc", list(%pi,"a"), int8(23),cos,sind,"àèìòù",corelib, 0.5, 1/%z^2)
    rc = matrix(c, 3, 4)
    rc(8)==c(8)
    rc{8}.getshell

     c  =
    (:,:,1)
      [1x1 boolean]  [1x1 polynomial]  [1x1 constant]
      [1x1 string ]  [    list      ]  [1x1 int8    ]
    (:,:,2)
      [      1 fptr   ]  [      1 function]  [1x1 string]
      [        library]  [    1x1 constant]  [    r     ]

    --> rc = matrix(c, 3, 4)
     rc  =
      [1x1 boolean   ]  [    list    ]  [      1 fptr    ]  [1x1 constant]
      [1x1 string    ]  [1x1 constant]  [        library ]  [1x1 string  ]
      [1x1 polynomial]  [1x1 int8    ]  [      1 function]  [    r       ]

    --> rc(8)==c(8)
     ans  =
      T

    --> rc{8}.getshell
     ans  =
     cmd

С массивом структур:

    clear s
    s(3,6).r = %pi
    matrix(s,2,9)

    --> s(3,6).r = %pi
     s  =
      3x6 struct array with fields:
        r

    --> matrix(s,2,9)
     ans  =
      2x9 struct array with fields:
        r

## Смотрите также

- двоеточие (:)
- resize_matrix
- ndims
- size
- выделение
- транспонирование
- квадратные скобки [..]
- матрицы
- гиперматрицы
- makecell
- struct
- mlist