2015-04-30 105 views
0

我刚刚下载并安装matlab集群工具箱(http://www.mathworks.com/matlabcentral/fileexchange/7486-clustering-toolbox) 但是,当我运行第一个演示文件,这是摩托车群集示例,我收到以下错误。Matlab聚类工具箱

Undefined function 'isnan' for input arguments of type 'struct'.

Error in internal.stats.removenan (line 54) wasnan = wasnan | any(isnan(y),2);

Error in statremovenan (line 7) [badin,wasnan,varargout{1:nargout-2}] = internal.stats.removenan(varargin{:});

Error in kmeans (line 141) [~,wasnan,X] = statremovenan(X);

Error in Kmeanscall (line 21) result=kmeans(data,param);

有没有人用这个工具箱?如果是这样,我该如何处理这个问题?

+0

你使用的是什么版本的matlab?这听起来像你的版本'isnan'不适用于结构。 – TheBlackCat

+0

我已经在版本2013b和2014a中试过了。你知道我该如何处理这个问题? – Ram

回答

3

问题与名称冲突有关。群集工具箱有一个Kmeans函数。但是,MATLAB统计工具箱有它自己的kmeans函数。简单的说,你的路径中的聚类工具箱目录比MATLAB内建的目录低。因此,首先要确保集群工具箱目录位于路径的顶部,或者至少高于内置的MATLAB目录。

如果这不起作用,你可能会遇到一个问题,在MATLAB中有一个主要的向后兼容性中断。回到工具箱编写时,MATLAB名称不区分大小写,因此Kmeanskmeans被认为是同一件事。所以如果你把聚类工具箱放在你的路径的顶部,它的版本将是首选。

然而,从那时起,MATLAB已经变成区分大小写(在某些情况下,取决于平台)。这意味着,就您的情况而言,它更喜欢内置的kmeans功能,而不是工具箱提供的Kmeans功能。这些功能不同,导致演示无法正常工作。

因此,如果路径更改无法解决问题,您需要做的是浏览工具箱中的所有代码(包括函数和演示),并确保所有函数都使用正确的大小写。

+0

你是救世主;)。非常感谢你。 – Ram