假设我有一个字符串向量,并且我写了一个函数来查找两个字符串之间的距离。

我想获得此函数确定的距离矩阵。
我知道使用循环的蛮力方式,但是还有另一条更简单的途径吗?

例如:

我的功能:

function [value] = func(str1, str2)
    value = abs(str1(1) - str2(1))
end


获取度量矩阵的艰辛方法

v = ['str'; 'rew'; 'ter'];
num = length(v);
metrMat = zeros(num);
for ii = 1:num
    for jj = 1:num
        metrMat(ii,jj) = func(v(ii),v(jj));
    end
end
metrMat

>metrMat =

>     0     1     1
>     1     0     2
>     1     2     0

最佳答案

这将是vectorized approachbsxfun的一个-

metrMat = abs(bsxfun(@minus,v(:,1),v(:,1).'))


样品运行-

>> v
v =
str
rew
ter
>> metrMat = abs(bsxfun(@minus,v(:,1),v(:,1).'))
metrMat =
     0     1     1
     1     0     2
     1     2     0

08-25 08:12