我想计算有向图中非相邻节点之间的测地距离。像下面的矩阵(W)一样,零表示这些节点不相邻,其他值表示对应节点的边缘权重。我根据以下公式计算了距离:
我使用了MATLAB函数graphshortestpath()
。但是,恐怕此功能无法提供我想要的东西。所以问题是计算这种距离的另一种方法是什么? MATLAB中是否还有其他功能?使矩阵稀疏会影响最终结果吗?
程序代码:
N=6; % Size of matrix W
W=[0,0.797944993710195,0,0,0,0;0.495326358306295,0,0.164911895411107,0,0,0;0,0.0530273831645896,0,0.00901073533222818,0,0;0,0,0.00709165683115063,0,0.438584093809830,0;0,0,0,0.397895339311598,0,0.000916573989905329;0,0,0,0,0.00104307323830613,0]; %Connectivity matrix
Geo_dist=zeros(N); %temporary variable for geodesic distance measurement
W_sparse=sparse(W); %Making W sparse because the matlab function works only with sparse matrix
for g=1:N
for h=1:N
if W(g,h)==0 & g~=h;
Geo_dist(g,h)=graphshortestpath(W_sparse,g,h,'directed',false);
end
end
end
答案 0 :(得分:2)
您可以直接在图像网格上的“图像处理工具箱”中使用bwdistgeodesic或graydist吗?
https://www.mathworks.com/help/images/ref/graydist.html https://www.mathworks.com/help/images/ref/bwdistgeodesic.html
或者,如果您更喜欢平滑的东西,那么如果您看一下doc示例,imsegfmm将允许您使用快速行进方法来计算测地距离:
https://www.mathworks.com/help/images/ref/imsegfmm.html
我在回答中假设您已经对图像数据进行了网格化,并且由于它被标记为“图像处理”,因此这不是任意连接图。