主要输入必须是数字。 MATLAB

时间:2012-07-17 17:34:56

标签: matlab cluster-analysis fuzzy

我收到了一个我不理解使用FCM的错误。

如果我在Documentation中设置类似的选项,则会输出此错误:

??? Error using ==> zeros
Leading inputs must be numeric.

Error in ==> fcm at 83
obj_fcn = zeros(max_iter, 1);   % Array for objective function

Error in ==> fcm at 82
      [centers, U, objFun] = fcm(data, 6, 'options');

如果我删除选项,代码运行正常,这里是完整的代码:

  [centers, U, objFun] = fcm(data, 6, 'options');
  plot(data(:,1), data(:,2),'o');
  maxU = max(U);
  index1 = find(U(1, :) == maxU);
  index2 = find(U(2, :) == maxU);
  line(data(index1,1),data(index1, 2),'linestyle','none',...
 'marker','*','color','g');
  line(data(index2,1),data(index2, 2),'linestyle','none',...
 'marker', '*','color','r');

1 个答案:

答案 0 :(得分:2)

问题是fcm期望接收选项 array ,而不是字符串。你正在通过'options',但你应该这样做:

options(1) = 2.0;
options(2) = 100;
options(3) = 1e-5;
options(4) = 1;
[centers, U, objFun] = fcm(data, 6, options); % notice no quotes!

我正在使用fcm文档中指定的默认值。您可以将它们更改为您喜欢的任何内容。

或者,文档指定如果您想要默认值,则可以将选项设置为NaN,因此您可以随意选择默认值。