2014-10-07 26 views
0

我有一个矩阵(A),其中某个位置(loc)由行和列给出。我想围绕这个确切位置(loc)“缓冲”。所以,围绕确切的位置(loc) - 由一行和一列定义 - 值应该由NaN取代。所以在loc的矩阵(A)内创建一个4x4的窗口。我怎样才能做到这一点?用NaN替换xy位置的周围

这个矩阵(A)被用在一个循环中 - 在这个循环中,我发现每次某个位置(loc)应该不同于前一个位置(loc)并且不接近前一个位置 - 对于这个I想要替换上一次运行的loc和“周围”。

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

我希望我可以做我自己清楚,我想做些什么....

我的印象中,Matlab的的buffer命令不适合在这种情况下。我宁愿做一个循环?

任何建议都非常感谢...

谢谢!

伊娃

+3

“窗口4×4”能不能居中围绕矩阵索引。例如如果你的loc是10,10,你的4 x 4是8:11,8:11还是9:12,9:12? – nkjt 2014-10-07 14:11:02

回答

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;