2015-04-30 103 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