Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MATLAB中相邻元素的比较_Arrays_Matlab_Comparison_Matrix - Fatal编程技术网

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,双关语:毫无疑问,这是一个进步