2017-05-07 163 views
2

假設我有一個邏輯矩陣A(大約1000x1000大小),並且想要爲每個元素找到最接近TRUE值的歐幾里德距離。如何在Matlab中快速完成?Matlab:在矩陣中查找到最接近TRUE值的距離

例如,如果我有矩陣A:

A = [1 0 0 0 
    0 1 1 1 
    0 0 0 0 
    0 0 1 0] 

然後,我想要的是:

B = [0 1 1 1 
    1 0 0 0 
    1.41 1 1 1 
    2 1 0 1] 

一種可能性是imdilate(),但後來我不得不擴張一個m×n矩陣與一個2Mx2N矩陣,這將花費太長時間。

我嘗試使用pdist2()計算每個元素到每個元素的距離== 1,然後取最小值,但實際上使用方式太多的內存。

有什麼建議嗎?我也會解決一個解決方案,只是接近它。

回答

4

bwdist功能在圖像處理工具箱目的正是這個

A = [1 0 0 0 
    0 1 1 1 
    0 0 0 0 
    0 0 1 0]; 

B = bwdist(A); 

% 0.00000 1.00000 1.00000 1.00000 
% 1.00000 0.00000 0.00000 0.00000 
% 1.41421 1.00000 1.00000 1.00000 
% 2.00000 1.00000 0.00000 1.00000 
+0

我googeling技能一定要變得更好。多謝! –