2013-11-24 3 views
-2

Мне было интересно: у меня матрица 100x100. Я хотел бы разбить его на несколько подматриц 10x10, включая первые столбцы и строки 1-10, затем второй, включая столбцы 11-20, а также строки 1-10 и сына, пока, в конце концов, у меня не будет набора из 10x10 матриц.Извлечение субматриц из матрицы

Есть ли способ сделать это, не создавая чрезвычайно сложный массив для циклов?

Спасибо :)

+1

ли вы имеете в виду [что-то вроде mat2cell] (http://www.mathworks.co.uk/ помощь/Matlab/исх/mat2cell.html)? –

+0

Да, похоже! : D Спасибо :) – MrD

+0

Возможный дубликат [Как разделить изображение на блоки в MATLAB?] (Http://stackoverflow.com/questions/1637000/how-to-divide-an-image-into-blocks-in- matlab) или [Разделить матрицу на подматрицы в MATLAB] (http://stackoverflow.com/questions/12554522/divide-a-matrix-into-submatrices-in-matlab). Честно говоря, я почти не вижу никаких исследований. Простой поиск в Google дал бы много полезных ответов. –

ответ

0

Если вам нужно извлечь подматрица явно чем mat2cell бы разумный выбор:

sm = mat2cell(M, 10*ones(1,size(M,1)/10), 10*ones(1,size(M,2)/10)); 

Однако, если вам нужны только эти подматрицы для локальной обработки вы можете использовать blockproc

blockproc(M, [10 10], @myFun); 
Смежные вопросы