Jon*_*han 2 arrays comparison matlab 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
Run Code Online (Sandbox Code Playgroud)
有没有办法循环遍历每个元素并对其周围的元素是否等于1进行逻辑测试?
小智 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
Run Code Online (Sandbox Code Playgroud)
Loren最近发布了关于这个问题的文章:http://blogs.mathworks.com/loren/2010/01/19/mathematical-recreations-tweetable-game-of-life/ - 通过研究,可以学到很多有趣的东西.该帖子中的代码及其评论