在网格的每个单元格上放置一个(n乘n)矩阵的数字

时间:2016-10-05 00:02:17

标签: matlab

我已经实现了A *算法来解决8-puzzle。但是我希望通过在动画状态的网格上显示我的3乘3矩阵的每个状态变化的结果来更加花哨。

我的矩阵的数字从0到8,所以我想要一个3行3列的网格,每个图块上都有一个数字。

我真的不知道从哪里开始,欢迎所有的想法。

第一个矩阵下面是我开始的地方,我使用A *来达到目标​​状态的最后一个状态。我想在网格上显示这些矩阵,并以图形方式显示转换。因此,每次矩阵发生变化时,网格也会发生变化。

 2     8     3
 1     6     4
 7     0     5

 2     8     3
 1     0     4
 7     6     5

 2     0     3
 1     8     4
 7     6     5

 0     2     3
 1     8     4
 7     6     5

 1     2     3
 0     8     4
 7     6     5

 1     2     3
 8     0     4
 7     6     5

1 个答案:

答案 0 :(得分:1)

请看一下使用imagesc

的示例
P = perms(0:8);
A = reshape(P(1:100,:).',3,[]);
A = reshape(A,3,3,[]);

for k = 1:size(A,3)
    imagesc(A(:,:,k))
    axis off
    pause(0.1)
end

opt_1

如果您想添加边框,可以使用nan s:

填充边框
B = nan(5,5,size(A,3));
B(1:2:5,1:2:5,:) = A;
cmap = colormap;
cmap(1,:) = [0 0 0];
colormap(cmap)

for k = 1:size(B,3)
    imagesc(B(:,:,k))
    axis off
    pause(0.1)
end

opt_2

或使用pcolor(使用nan s填充一些内容):

B = nan(4,4,size(A,3));
B(1:3,1:3,:) = A;

for k = 1:size(B,3)
    pcolor(B(:,:,k))
    axis off
    pause(0.1)
end

opt_3