有谁知道我如何比较数组中的元素与相邻的元素?
例如,如果我有一个数组:
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进行逻辑测试?
答案 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/ - 通过研究该帖子中的代码及其评论可以学到很多有趣的东西