用NaN替换xy位置的周围

时间:2014-10-07 13:29:31

标签: matlab replace buffer

我有一个矩阵(A),其中某个位置(loc)由行和列给出。我想围绕这个确切的位置(loc)“缓冲”。因此,在由一行和一列定义的确切位置(loc)附近 - 值应该由NaN替换。因此,在loc周围的矩阵(A)内创建了一个4x4的窗口。我怎么能这样做?

这个矩阵(A)用在循环中 - 在这个循环中我每次都找到一个特定的位置(loc),它应该与前一个位置(loc)不同而且不接近前一个位置 - 为此我会喜欢替换上一次运行的loc和“周围”。

所以最后我在矩阵(A)中有几个'loc'。

我希望我能说清楚自己想做什么......

我的印象是Matlab的缓冲命令不适合那种情况。我宁愿做一个循环?

真的很感激任何建议......

谢谢!

伊娃

1 个答案:

答案 0 :(得分:0)

如果您有图像处理工具箱,并且使用奇数尺寸的"缓冲区",那真的很容易:

nBuf = 3; % size of buffer zone. 3 makes a 3-by-3 array centered on the location

mask = false(sizeOfA);

idx = sub2ind(sizeOfA,loc(:,1),loc(:,2));

mask(idx) = true;

mask = imdilate(mask,true(nBuf));
mask(idx) = false;

% now you can use mask to replace all values around the locations with NaN
A(mask) = NaN;