假设我有一个字符串向量,并且编写了一个函数来查找两个字符串之间的距离。
我想获得由该函数确定的距离矩阵。 我知道用循环来实现这一点的蛮力方法,但是还有其他更简单的路径吗?
例如:
我的功能:
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
最佳答案
为什么你这么不愿意使用for循环?他们的速度相当快。
利用度量矩阵的对称性,可以改进 for 循环:
for ii = 1:num
for jj = 1:ii
metrMat(ii,jj) = func(v(ii),v(jj));
end
end
metrMat = metrMat + tril(metrMat)'
如果您有权访问统计工具箱,这可以通过一行实现:
metrMat = squareform(pdist(v(1:num)'));
关于matlab - Matlab中获取度量矩阵的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29563536/