reshape

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

Описание

пример

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

пример

reshape(A,n1,...,nM) возвращает n1-by- ...-by- nM массив, который имеет те же элементы что и A. Элементы берутся столбцово из A для заполнения элементов n1-by- ...-by- 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]

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

Измените форму трехмерного массива в 2-D матрицу

Измените массив 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 вместо циклов, чтобы разбить массивы для дальнейших расчетов. Использование 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