如何通过仅移动一行和一列来从大型矩阵创建所有可能的子矩阵

时间:2019-01-02 20:24:12

标签: matlab matrix submatrix

我正在研究一个矩阵问题,我有一个m * n矩阵,我想通过移动一行和一列从中提取所有5 * 5矩阵,但我无法提取所有5 * 5矩阵,但是只有一次。您能帮我提取所有矩阵吗?

我能够使用Basic操作提取内容,但是如何使用循环提取所有子矩阵

A = [(40 45 50 60 70 80),  (10 12 15 17 18 20),  (35 41 57 44 98 78),  (45 74 11 2 36 78),  (12 45 79 85 36 45),   (1 5 8 78 47 3)]

A(1:5,1:5)

示例 输入: [(40 45 50 60 70 80),  (10 12 15 17 18 20),  (35 41 57 44 98 78),  (45 74 11 2 36 78),  (12 45 79 85 36 45),   (1 5 8 78 47 3)]

输出: [(40 45 50 60 70),[(45 50 60 70 80),  (10 12 15 17 18),(12 15 17 18 20),  (35 41 57 44 98),(41 57 44 98 78),  (45 74 11 2 36),(74 11 2 36 78),  (12 45 79 85 36)](45 78 85 36 45)]

这样的事情,我能够提取第一个输出,但不是全部输出 enter image description here

1 个答案:

答案 0 :(得分:0)

这应该使您具有单元格数组B中的所有子矩阵

clear all;
A=[40 45 50 60 70 80; 10 12 15 17 18 20; 35 41 57 44 98 78; 45 74 11 2 36 78; 12 45 79 85 36 45; 1 5 8 78 47 3]
for i=1:size(A,1)-4
    for j=1:size(A,2)-4
        B{i,j}=A(i:i+4,j:j+4)
    end
end