Matlab:在矩阵中查找到最近真值的距离

Matlab:在矩阵中查找到最近真值的距离,matlab,matrix,distance,Matlab,Matrix,Distance,假设我有一个大约1000x1000大小的逻辑矩阵a,并希望为每个元素找到最接近真值的欧几里德距离。如何在Matlab中快速完成 例如,如果我有矩阵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] 一种可能是imdeflate,但是我必须用2Mx2N矩阵来扩展MxN矩阵,这将花费太长的时间 我试着用pdi

假设我有一个大约1000x1000大小的逻辑矩阵a,并希望为每个元素找到最接近真值的欧几里德距离。如何在Matlab中快速完成

例如,如果我有矩阵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]
一种可能是imdeflate,但是我必须用2Mx2N矩阵来扩展MxN矩阵,这将花费太长的时间

我试着用pdist2计算从每个元素到每个元素==1的距离,然后取最小值,但结果是占用了太多的内存

有什么建议吗?我也会选择一个近似的解决方案。

图像处理工具箱中的函数正是这样做的

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

我的谷歌搜索技能肯定需要提高。太多了!