gpt4 book ai didi

matlab - 查找矩阵中所有零元素的邻居

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:39 25 4
gpt4 key购买 nike

在 matlab 中,我有一个非负项矩阵 A。请参阅以下内容:

A=[0 2 3 5 4 7 8
1 8 2 7 5 2 9
0 1 2 4 8 0 5
2 4 8 6 0 5 8
1 1 2 5 8 3 6];

我想找到除零元素以外的所有零元素的邻居。这意味着我想在向量 v 中存储 A(1, 1)、A(2, 5)、A(3, 1)、A(3, 6)、A(4, 5) 和A(5, 1),如果其中一个邻居为零,则我不存储它。

元素 (i, j) 的邻居是指距离 (i, j) 一个元素远的元素,即 A(i, j+1), A(i, j-1), A(i-1, j), A(i-1, j-1), A(i-1, j+1), A(i+1, j), A(i+1, j-1) , 和 A(i+1, j+1)。每个元素 (i, j) 都有 7 个邻居。

我不存储重复元素。这意味着,如果例如 A(1, 1)=0 and A(1,3)=0 and A(1,2)=1 那么我将只存储一次 A(1, 2)。

在我之前的示例中,向量 v 将是这个:

v=[2 1 8 1 2 4 5 2 9 8 5 5 8 4 6 5 8 3];

如何在没有循环的情况下在 matlab 中做到这一点?

这是我的方阵代码:cl_ 是我的矩阵中零的个数。 ix_为零元素的行索引,iy_为零元素的列索引。

for i_=1:length(cl_)
ixn1_(1:2)=ix_(i_);
ixn2_(1:3)=ix_(i_)-1;
ixn3_(1:3)=ix_(i_)+1;
iyn1_=iy_(i_)-1;
iyn2_=iy_(i_)+1;
iyn3_(1:3)=[iy_(i_)-1, iy_(i_), iy_(i_)+1];
ixn_{i_}=[ixn1_, ixn2_, ixn3_];
iyn_{i_}=[iyn1_, iyn2_, repmat(iyn3_, 1, 2)];
end
% find the neighbors

最佳答案

如果您不关心值的顺序:

mask = A==0;
neighborMask = xor(conv2(double(mask),ones(3),'same')>0,mask);
v = A(neighborMask)

关于matlab - 查找矩阵中所有零元素的邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com