2009-11-29 2 views
8

Предположим, у меня есть матрица 100x100, я хочу разделить ее на равные части 10x10.Как разделить матрицу на равные части?

Проблема в том, что входная матрица может иметь любой размер (но всегда mod 10). Я посмотрел на функцию mat2cell, но, похоже, она не работает для динамического количества деталей. Или я что-то упускаю?

+5

Если ваша цель состоит в том, чтобы в конечном счете обрабатывать эти суб-матрицы, возможно, вы хотите рассмотреть вопрос об использовании блока функции обработки в Image Processing Toolbox (например: ** blockproc **), см. по адресу: http://www.mathworks.com/access/helpdesk/help/toolbox/images/f7-12726.html. – Amro

ответ

12

Вы просто должны указать mat2cell точно, как вы хотите, чтобы матрица разделилась. Если вы уверены, что он всегда будет кратным 10 в обоих направлениях, то он (справедливо) прост. Предполагая, что X матрица, что вы хотите разделить, и вы хотите, чтобы результирующий массив клеток в Y:

Y = mat2cell(X, repmat(10,[1 size(X,1)/10]), repmat(10,[1 size(X,2)/10]));