MATLAB-将参数传递给pdist自定义距离函数
我已经在Matlab中为k-medoids算法实现了一个自定义距离函数,如下所示 基本上,它比较两个向量,例如MATLAB-将参数传递给pdist自定义距离函数,matlab,cluster-analysis,distance,pdist,Matlab,Cluster Analysis,Distance,Pdist,我已经在Matlab中为k-medoids算法实现了一个自定义距离函数,如下所示 基本上,它比较两个向量,例如A和B(也可以有不同的长度),并检查它们的元素是否“与公差共存”:A(i)和B(j)与公差共存tol如果 abs( A(i) - B(j) ) <= tol abs(A(i)-B(j))要回答您的一般问题,可以将自定义参数传递给自定义距离函数。您可以这样定义distfun a = 1; % Variable you want to pass to your function di
A
和B
(也可以有不同的长度),并检查它们的元素是否“与公差共存”:A(i)
和B(j)
与公差共存tol
如果
abs( A(i) - B(j) ) <= tol
abs(A(i)-B(j))要回答您的一般问题,可以将自定义参数传递给自定义距离函数。您可以这样定义distfun
a = 1; % Variable you want to pass to your function
distanceFunction = @(xi, xj)yourCustomDistanceFunction(xi, xj, a)
yourCustomDistanceFunction
应该接受默认参数作为前两个输入,然后最后一个输入是您自己的变量(它不是通过pdist
传递的)
然后按以下方式将其提供给pdist
pdist(X, distanceFunction)
为什么不干脆abs(bsxfun(@减号,A(:),B(:)))我把k-medoids称为[idx,C]=kmedoids(数据,2,'Distance',@custom_Distance)代码>。我想将tol
的值传递给custom\u distance
。(距离本身起作用,我使用了ismembertol
)。现在,我只是将tol
指定为custom\u distance
中的一个常量。