изменение

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

Синтаксис

reshape(A,n1,n2)
reshape(A,n1,...,nM)
reshape(A,...,[],...)
reshape(A,sz)

Описание

пример

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.', где .' является несопряженным, транспонируют.

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

Измените символьный матричный M 2 на 6 в 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]

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

Измените трехмерный массив в 2D матрицу

Измените 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