Arrays MATLAB中相邻元素的比较
有人知道如何将数组中的元素与相邻元素进行比较吗 例如,如果我有一个数组:Arrays MATLAB中相邻元素的比较,arrays,matlab,comparison,matrix,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进行逻辑测试?哎呀,看起来有人在做家庭作业。也许是人生游戏 有很多方法可以做这样的测试。但要学会以矢量化的形式来做。这涉及到了解matlab如何建立索引,以及二维数组的元素如
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进行逻辑测试?哎呀,看起来有人在做家庭作业。也许是人生游戏 有很多方法可以做这样的测试。但要学会以矢量化的形式来做。这涉及到了解matlab如何建立索引,以及二维数组的元素如何存储在内存中。这将需要一些时间来详细解释,比我现在想做的还要多。不过,我绝对推荐你去学 在那之前,我只是建议如果你真的在做人生游戏,那么最好的技巧就是使用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
Loren最近发布了关于这个问题的帖子:-通过研究帖子中的代码及其评论可以学到很多有趣的东西哇,我希望我在做有限差分法的时候就知道conv2。+1-我认为任何其他解决方案都太复杂了
conv2
绝对是解决这个问题最优雅的方法。@Jacob:我同意。但是为了回答OP的问题,也许您应该添加B==8
,以检测其8个邻域都等于1的元素。当然,您可以将掩码更改为仅检查直接的4个邻居(无对角线)。如果您想正确处理边,您可能需要使用imfilter函数的边界复制选项,例如:B=imfilter(A,[1 1 1;1 0 1;1 1 1 1],'replicate','same','conv')==8
@celion:Yes,双关语:毫无疑问,这是一个进步