Matlab:在矩阵中查找到最接近TRUE值的距离
问题描述:
假设我有一个逻辑矩阵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,然后取最小值,但实际上使用方式太多的内存。
有什么建议吗?我也会解决一个解决方案,只是接近它。
答
的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
我googeling技能一定要变得更好。多谢! –