2017-05-07 16 views
2

論理行列A(約1000x1000サイズ)を仮定し、各要素について、最も近い真値へのユークリッド距離を求めたいとします。それは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マトリックス。

私は各要素から各要素への距離== 1を計算してみましたが、pdist2()を使って最小値を取ってみましたが、あまりにも多くのメモリを使いました。

提案がありますか?私はまた、ちょうどそれに近似する解決策を解決するだろう。

答えて

4

Processing Toolboxには間違いなく、まさにこの

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のスキルが良く取得する必要がない画像でbwdist機能。ありがとう! –

関連する問題