Разбить массив на части в MATLAB - PullRequest
5 голосов
/ 23 декабря 2011

Мне бы хотелось разделить массив на равные части следующим образом:

 a=[1 2 3 4 5 6 7 8 9 10]
 n = 2;
 b = split(a, n);

 b =

 1     2     3     4     5
 6     7     8     9    10

Какая функция может это сделать?

Ответы [ 2 ]

14 голосов
/ 23 декабря 2011

Попробуйте это:

a = [1 2 3 4 5 6]
reshape (a, 2, 3)
13 голосов
/ 23 декабря 2011

Если a можно разделить на n, вы можете указать только один аргумент для RESHAPE.

Чтобы преобразовать в 2 строки:

b = reshape(a,2,[])

Чтобы изменить форму на 2 столбца:

b = reshape(a,[],2)

Обратите внимание, что изменение формы выполняется по столбцам, сначала заполняется 1-й столбец, затем 2-й и т. Д. Чтобы получить желаемый результат, вы должны изменить форму на 2 столбца и затем транспонировать результат.

b = reshape(a,[],2)'

Вы можете разместить чек до изменения формы:

assert(mod(numel(a),n)==0,'a does not divide to n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...