比较MATLAB中的相邻元素

时间:2010-02-13 11:40:44

标签: arrays matlab comparison matrix

有谁知道我如何比较数组中的元素与相邻的元素?

例如,如果我有一个数组:

0 0 0 1 1 1 1 0 
0 1 1 1 1 1 1 0 
0 1 0 1 1 1 1 0
0 1 1 1 1 1 0 0
0 0 0 0 1 1 1 1
1 1 1 1 1 1 1 1

有没有办法循环遍历每个元素并对其周围的元素是否等于1进行逻辑测试?

2 个答案:

答案 0 :(得分:8)

哎呀,看起来有人在做家庭作业。生命的游戏可能吗?

有很多方法可以进行这样的测试。但要学习以矢量化的形式。这包括理解matlab如何编制索引,以及如何将2-d数组的元素存储在内存中。这需要一些时间来详细解释,比我想要在这个时刻做的更多。我肯定会建议你学习它。

在那之前,我只是建议如果你真的在做生命游戏,那么最好的诀窍是使用conv2。因此,

A =[0     0     0     1     1     1     1     0
    0     1     1     1     1     1     1     0
    0     1     0     1     1     1     1     0
    0     1     1     1     1     1     0     0
    0     0     0     0     1     1     1     1
    1     1     1     1     1     1     1     1];

B = conv2(A,[1 1 1;1 0 1;1 1 1],'same')
B =
    1     2     4     4     5     5     3     2
    2     2     5     6     8     8     5     3
    3     4     8     7     8     7     4     2
    2     2     4     5     7     7     6     3
    3     5     6     7     7     7     6     3
    1     2     2     3     4     5     5     3

答案 1 :(得分:5)

Loren最近发布了这个问题:http://blogs.mathworks.com/loren/2010/01/19/mathematical-recreations-tweetable-game-of-life/ - 通过研究该帖子中的代码及其评论可以学到很多有趣的东西