Error when using kmedoids with custom distance function

1 回表示 (過去 30 日間)
Daniel
Daniel 2014 年 10 月 16 日
回答済み: Siddharth Sundar 2014 年 10 月 17 日
Hi,
I created a custom distance function which I used with linkage and it worked fine. Here is how I call it: Z = linkage(matrix_clean,'average','@new_dist');
When I try using kmedoids (from the stats toolbox) with a custom fucntion I get an error. Here is how I call the fucntion: [idx,C,sumd,d,midx] = kmedoids(matrix_clean,2,'Distance','@new_dist');
Here is the error:
Error using lower Not enough input arguments.
Error in kmedoids (line 242) distance = lower(methods{i});
How should I pass in my custom distance function in kmedoids?
Thanks,
Daniel
  1 件のコメント
Geoff Hayes
Geoff Hayes 2014 年 10 月 16 日
Daniel - if this happens again, in the Command Window, type
which lower -all
Perhaps you have a custom function named lower that requires more than one input parameter and so is causing some confusion with the built-in MATLAB lower function.

サインインしてコメントする。

採用された回答

Siddharth Sundar
Siddharth Sundar 2014 年 10 月 17 日
Within the kmedoids function, there is a check on the distance metric to see if it is a string or a function handle. In your case, you have entered the function handle as a string and hence it is following a different code path from the one it should be following. All you would need to to is to use the command without quotes around your function handle:
[idx,C,sumd,d,midx] = kmedoids(matrix_clean,2,'Distance',@new_dist);

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDesign of Experiments (DOE) についてさらに検索

Translated by