exponenta event banner

измениться

Изменить форму символьного массива

Описание

пример

reshape(A,n1,n2) возвращает значение n1около-n2 матрица, которая имеет те же элементы, что и A. Элементы берутся по столбцам из A для заполнения элементов n1около-n2 матрица.

пример

reshape(A,n1,...,nM) возвращает значение n1около-...около-nM массив, который имеет те же элементы, что и A. Элементы берутся по столбцам из A для заполнения элементов n1около-...около-nM массив.

пример

reshape(A,...,[],...) позволяет представить значение размера с местозаполнителем [] при автоматическом расчете величины этого значения размера. Например, если A имеет размер 2 на 6, затем reshape(A,4,[]) возвращает массив 4 на 3.

пример

reshape(A,sz) изменяется A в массив с размером, указанным sz, где sz является вектором.

Примеры

Преобразовать символьный вектор строки в вектор столбца

Измениться V, который является вектором строки 1 на 4, в вектор столбца 4 на 1 Y. Здесь, V и Y должен иметь одинаковое количество элементов.

Создание вектора V.

syms f(x) y
V = [3 f(x) -4 y]
V =
[ 3, f(x), -4, y]

Измениться V в Y.

Y = reshape(V,4,1)
Y =
   3
f(x)
  -4
   y

В качестве альтернативы можно использовать Y = V.' где .' - непереходная транспозиция.

Преобразовать символьную матрицу

Изменение формы символьной матрицы 2 на 6 M в матрицу 4 на 3.

M = sym([1 9 4 3 0 1; 3 9 5 1 9 2])
N = reshape(M,4,3)
M =
[ 1, 9, 4, 3, 0, 1]
[ 3, 9, 5, 1, 9, 2]
 
N =
[ 1, 4, 0]
[ 3, 5, 9]
[ 9, 3, 1]
[ 9, 1, 2]

M и N должен иметь одинаковое количество элементов. reshape читает M для заполнения элементов N по столбцам.

Можно также использовать вектор размера для задания размеров измененной матрицы.

sz = [4 3];
N = reshape(M,sz)
N =
[ 1, 4, 0]
[ 3, 5, 9]
[ 9, 3, 1]
[ 9, 1, 2]

Автоматически задать размер измененной матрицы

При замене размера местозаполнителем [], reshape вычисляет требуемую величину этого размера для изменения формы матрицы.

Создание матрицы M.

M = sym([1 9 4 3 0 1; 3 9 5 1 9 2])
M =
[ 1, 9, 4, 3, 0, 1]
[ 3, 9, 5, 1, 9, 2]

Измениться M в матрицу с тремя столбцами.

reshape(M,[],3)
ans =
[ 1, 4, 0]
[ 3, 5, 9]
[ 9, 3, 1]
[ 9, 1, 2]

reshape вычисляет, что преобразованная матрица из трех столбцов требует четырех строк.

Изменить форму матрицы по строкам

Изменение формы матрицы по строкам путем транспонирования результата.

Создать матрицу M.

syms x
M = sym([1 9 0 sin(x) 2 2; NaN x 5 1 4 7])
M =
[   1, 9, 0, sin(x), 2, 2]
[ NaN, x, 5,      1, 4, 7]

Измениться M по строкам путем транспонирования результата.

reshape(M,4,3).'
ans =
[ 1, NaN,      9, x]
[ 0,   5, sin(x), 1]
[ 2,   4,      2, 7]

Обратите внимание, что .' возвращает несопряженное транспонирование, пока ' возвращает сопряженное транспонирование.

Измените 3D множество в 2-ю матрицу

Измените множество 3 на 3 на 2 M в матрицу 9 на 2.

M имеет 18 элементов. Потому что матрица 9 на 2 также имеет 18 элементов, M может быть преобразован в него. Конструкция M.

syms x
M = [sin(x) x 4; 3 2 9; 8 x x];
M(:,:,2) = M'
M(:,:,1) = 
[ sin(x), x, 4]
[      3, 2, 9]
[      8, x, x]
M(:,:,2) = 
[ sin(conj(x)), 3,       8]
[      conj(x), 2, conj(x)]
[            4, 9, conj(x)]

Измениться M в матрицу 9 на 2.

N = reshape(M,9,2)
N =
[ sin(x), sin(conj(x))]
[      3,      conj(x)]
[      8,            4]
[      x,            3]
[      2,            2]
[      x,            9]
[      4,            8]
[      9,      conj(x)]
[      x,      conj(x)]

Изменение формы для разбиения массивов

Использовать reshape вместо циклов для разбиения массивов для дальнейших вычислений. Использовать reshape чтобы разбить вектор V найти произведение каждых трех элементов.

Создать вектор V.

syms x
V = [exp(x) 1 3 9 x 2 7 7 1 8 x^2 3 4 sin(x) x]
V =
[ exp(x), 1, 3, 9, x, 2, 7, 7, 1, 8, x^2, 3, 4, sin(x), x]

Определить 3 для количества строк. Использовать местозаполнитель [] для количества столбцов. Это позволяет reshape автоматически вычислить количество столбцов, необходимых для трех строк.

M = prod( reshape(V,3,[]) )
M =
[ 3*exp(x), 18*x, 49, 24*x^2, 4*x*sin(x)]

reshape вычисляет, что для матрицы из трех строк требуется пять столбцов. prod затем умножает элементы каждого столбца, чтобы вернуть результат.

Входные аргументы

свернуть все

Входной массив, заданный как символьный вектор, матрица или многомерный массив.

Размеры измененной матрицы, указанные как скаляры, разделенные запятыми. Например, reshape(A,3,2) возвращает матрицу 3 на 2. Количество элементов в выходном массиве, указанное n1,n2 должно быть равно numel(A).

Размеры измененного массива, заданные как скаляры, разделенные запятыми. Например, reshape(A,3,2,2) возвращает матрицу 3 на 2 на 2. Количество элементов в выходном массиве, указанное n1,...,nM должно быть равно numel(A).

Размер измененного массива, заданного как числовой вектор. Например, reshape(A,[3 2]) возвращает матрицу 3 на 2. Количество элементов в выходном массиве, указанное sz должно быть равно numel(A).

См. также

|

Представлен до R2006a