输入值的数量不同

时间:2014-10-30 01:12:58

标签: matlab initialization k-means

实际上我正在做的是我想编写自己的k-means聚类函数。但是,为了给出初始输入,我不知道如何在Matlab中做到这一点。我的意思是,函数的一个输入是聚类中心的数量k,然后我们需要输入函数将在第一次迭代中使用的k个初始值。但是k可能会改变,初始值的数量也会改变。那么我怎么能用Matlab做到这一点。我希望输入是一个整数k和k个初始值。使用不同的k,不同数量的初始输入会发生变化,那么我能做什么呢?

提前致谢!!

2 个答案:

答案 0 :(得分:1)

为什么需要k + 1输入?你不能只使用一个输入吗? 例如,使用2维聚类:

function [ returnValues] = kMeans( centers)
% get number of cluster centers
k = size(centers,1);
for i = 1:k
    % select each center individually:
    center = centers(i,:);
    % process
end

具有三个集群中心[1,2],[3,4]和[5,6]的示例调用将是:

values = kMeans([1,2;3,4;5,6]);

答案 1 :(得分:0)

使用输入的变量nuber:

function retVal = kMeans(varargin)
% at least k has to be given
if length(varargin) < 1
   error('Wrong number of arguments given'); 
end
k = varargin{1};
disp(['K: ',num2str(k)]);
%check if k+1 inputs are given
if length(varargin) ~= k+1
   error('Wrong number of arguments given'); 
end
% process inputs
for i = 1+(1:k)
    center = varargin{i};
    disp(['Input Center ',num2str(i-1),' : ', num2str(center)]);
end
end

使用kMeans(2,[1,2],[3,4])调用时,会输出:

K: 2
Input Center 1 : 1  2
Input Center 2 : 3  4