如何在MATLAB中从矩阵创建子矩阵(全5 * 5)?可以通过只移动一行和一列来完成。我尝试使用以下代码,但未获得实际输出。这里A是输入矩阵。
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
现在,我得到以下输出:
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
B =
{
[1,1] =
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
}
B =
{
[1,1] =
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
[1,2] =
45 50 60 70 80
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
}
B =
{
[1,1] =
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
[2,1] =
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
1 5 8 78 47
[1,2] =
45 50 60 70 80
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
[2,2] = [](0x0)
}
B =
{
[1,1] =
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
[2,1] =
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
1 5 8 78 47
[1,2] =
45 50 60 70 80
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
[2,2] =
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
5 8 78 47 3
}
但是我需要这样的输出:
40 45 50 60 70
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
45 50 60 70 80
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
10 12 15 17 18
35 41 57 44 98
45 74 11 2 36
12 45 79 85 36
1 5 8 78 47
12 15 17 18 20
41 57 44 98 78
74 11 2 36 78
45 79 85 36 45
5 8 78 47 3
我必须在代码中进行哪些更改?
答案 0 :(得分:1)
重复显示是由于在您要在'None' is not a valid value for property 'BorderStyle'
中保存子矩阵的行中缺少分号。
您期望的输出需要此索引:
B
,然后您可以使用B{j,i} = A(i:i+4, j:j+4);
显示单元格。
还请在使用celldisp(B)
答案 1 :(得分:0)
您已经创建了矩阵的单元格数组,因此为何显示B
如此。
尝试这样做:
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 = A(i:i+4,j:j+4);
disp(B)
end
end
根据要对每个子矩阵执行的操作,下一步将有所不同。您可以采用的一种方法是将子矩阵保存在具有相关名称的.mat文件中,例如:
save(['B_',num2str(i),'_',num2str(j),'.mat'],'B')
(在我的示例中,将这行放在disp
的位置。)