我有一个矩阵(A),其中某个位置(loc)由行和列给出。我想围绕这个确切的位置(loc)“缓冲”。因此,在由一行和一列定义的确切位置(loc)附近 - 值应该由NaN替换。因此,在loc周围的矩阵(A)内创建了一个4x4的窗口。我怎么能这样做?
这个矩阵(A)用在循环中 - 在这个循环中我每次都找到一个特定的位置(loc),它应该与前一个位置(loc)不同而且不接近前一个位置 - 为此我会喜欢替换上一次运行的loc和“周围”。
所以最后我在矩阵(A)中有几个'loc'。
我希望我能说清楚自己想做什么......
我的印象是Matlab的缓冲命令不适合那种情况。我宁愿做一个循环?
真的很感激任何建议......
谢谢!
伊娃
答案 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;