给定一个说大小的方阵400x400,如何将其拆分为20x20使用for-loop的组成子矩阵?我甚至不知道从哪里开始!
我想我想要的东西:
[x,y] = size(matrix)
for i = 1:20:x
for j = 1:20:y
Run Code Online (Sandbox Code Playgroud)
但我不确定如何继续下去.思考?
我正在MATLAB中开展一个图像处理项目.为了更容易地预处理图像,我将其划分为行和列,因此从原始图像(2D uint8矩阵)开始,现在我有一个3D矩阵,就像堆栈一样.

处理完每个块之后,我想再次重新构图.问题是行数和列数是动态的,所以我不能使用(或者不知道如何在这里使用它)cat命令或[firstsubmatrix secondsubmatrix]语法.
顺便说一句,我这样做了这个部门:
numRows = 3
numCols = 3
blockHeight = originalHeight / numRows;
blockWidth = originalWidth / numCols;
blocks = uint8(zeros(numCols * numRows, blockHeight, blockWidth));
Run Code Online (Sandbox Code Playgroud)
因此,对于每个块,我使用填充其内容
y0 = (row - 1) * rowHeight + 1;
y1 = row * rowHeight;
x0 = (col - 1) * rowWidth + 1;
x1 = col * rowWidth;
blocks(numBlock, :, :) = originalImage(y0:y1, x0:x1);
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法,以及任何方式使块加入?
我有一个矩阵,其尺寸不会是3的倍数,也可能是.我们如何将整个图像分成3*3矩阵的块.(可以忽略不属于3*3倍数的最后一个.此外,3*3矩阵可以保存在数组中.
a=3; b=3; %window size
x=size(f,1)/a; y=size(f,2)/b; %f is the original image
m=a*ones(1,x); n=b*ones(1,y);
I=mat2cell(f,m,n);
Run Code Online (Sandbox Code Playgroud)