在 MATLAB 中,如何通过恰好移动一行和一列来从大型矩阵创建所有可能的子矩阵?

In MATLAB, how to create all the possible Sub-Matrices from a large Matrix by shifting exactly one row and one column?

假设我有一个 256*256 矩阵(图像像素值)。我想通过恰好移动一行和一列来创建 Sliding window 1 到 Sliding Window n。所有的滑动Window矩阵应该是5*5的大小。

我试过以下代码。通过这个我得到了子矩阵,但不是通过恰好移动一行和一列。

I = imread('D:\Study Material\project\Finger Print Database_2.png');

J = imresize(I, [128 128]);

C=mat2tiles(J,[5,5]);

你需要im2col with the 'sliding' option, followed by reshape:

blockSize = [5 5];
C = reshape(im2col(J, blockSize, 'sliding'), blockSize(1), blockSize(2), []);