Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB-将参数传递给pdist自定义距离函数_Matlab_Cluster Analysis_Distance_Pdist - Fatal编程技术网

MATLAB-将参数传递给pdist自定义距离函数

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

我已经在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
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
中的一个常量。