2016-03-05 2 views
0

Я имею двоичную матрицу размера 200х200:Деление бинарной квадратной матрицы в меньшие матрицы

matrix=double(rand(200,200)>0.5)); 

Я хочу разделить эту матрицу на более мелкие куски, например, 4 квадрата 100x100, 16 квадратов 50x50, 64 квадрата 25x25 и после этого на 64 квадрата размером 5x5x5x5 с 25 - нечетное число. Затем я хочу рассчитать те, что были в полученных матрицах.

Я ищу элегантное решение, не использующее много циклов и ищущее вдохновения или полезные функции matlab :).

Заранее спасибо

ответ

1

Это именно то, что mat2cell предназначается, чтобы сделать. Это будет работать для неквадратных изображений, а

dims = floor(size(img)/n); 
output = mat2cell(img(1:dims(1)*n, 1:dims(2)*n), ... 
        ones(1, dims(1)) * n, ones(1, dims(2)) * n); 

Это проходит подмножество img в mat2cell для учета случаев, когда img не в целом числе, кратное n.

+0

То, что мне нужно! Многому научитесь через этот пример. Спасибо вам второй раз за сегодня :). – holistic

+0

@holistic Обновлен мой ответ с более разумным решением. – Suever

+0

Я вижу! Отличное решение также ... в любом случае, может многому научиться из обоих решений :) – holistic

Смежные вопросы