How to split a matrix in "submatrices"?

6 ビュー (過去 30 日間)
Francesco Boari
Francesco Boari 2017 年 12 月 12 日
コメント済み: Francesco Boari 2017 年 12 月 13 日
How can i divide a matrix into submatrices of given dimensions in automatic way?
example:
data=reshape(1:88,11,8); %create a matrix
[mpixel,npixel]=size(data); %matrix's dimensions
m=2; %rows of the submatrix
n=3; %columns of the submatrix
v_w=floor(mpixel/m); %number of "vertical" submatrices
h_w=floor(npixel/n); %number of "horizontal" submatrices
cropdata=data(1:v_w*m,1:h_w*n);%crop matrix that can be diveded using that mxn submatrices
%
newdata=mat2cell(cropdata,[m m m m m],[n n]);
This code work but if I have bigger matrix I must continue to explicit [m m m...],[n n n...] in the last command and it's crazy. How can i use the command mat2cell with a smarter way?
  4 件のコメント
Image Analyst
Image Analyst 2017 年 12 月 12 日
Why not just use blockproc() and let that handle the getting of the submatrices?
Francesco Boari
Francesco Boari 2017 年 12 月 13 日
I see the documentation of blockproc(), it processes block by block but at the end the output it's the input image/matrix.

サインインしてコメントする。

採用された回答

Guillaume
Guillaume 2017 年 12 月 13 日
As others have said, there may be no need to explicitly split the matrix, but if you must what is wrong with:
newdata = mat2cell(cropdata, repelem(m, v_w), repelem(n, h_w));
  1 件のコメント
Francesco Boari
Francesco Boari 2017 年 12 月 13 日
Thanks! It works. Meanwhile i have found a different way leaving, as someone said, the original matrix and indexing.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by