2014-10-07 28 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;