How to split a matrix in "submatrices"?
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Francesco Boari
am 12 Dez. 2017
Kommentiert: Francesco Boari
am 13 Dez. 2017
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 Kommentare
Image Analyst
am 12 Dez. 2017
Why not just use blockproc() and let that handle the getting of the submatrices?
Akzeptierte Antwort
Guillaume
am 13 Dez. 2017
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));
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!