我正在寻找解决此问题的矢量化解决方案:
设 A
为 0 和 1 的向量(大尺寸:> 10000)。
例如:
A = [0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 etc]
我想用 2 替换 1(奇数列)之间的 0 即产生:
B = [0 0 0 1 2 2 2 2 2 1 0 0 0 1 2 2 1 0 0 1 2 1 etc]
感谢您的帮助
最佳答案
A = [0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1]
简短回答
A( mod(cumsum(A),2) & ~A ) = 2
A =
0 0 0 1 2 2 2 2 2 1 0 0 0 1 2 2 1 0 0 1 2 1
您请求填充奇数等级的岛屿,但通过将 mod(...
更改为 ~mod(...
您也可以轻松填满偶数等级的岛屿。
解释/旧答案:
mask1 = logical(A);
mask2 = logical(mod(cumsum(A),2))
out = zeros(size(A));
out(mask2) = 2
out(mask1) = 1
关于arrays - 用值填充二进制向量中的奇数序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30023626/