2017-05-07 162 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技能一定要变得更好。多谢! –