错误:返回列表中的元素编号2未定义

use*_*312 0 error-handling matlab octave

以下函数正在生成错误.

function [retval] = select_red(train, test)
% shuffle test/data points
  shuffled_test = test(randperm(size(test, 1)), :);

  clubs     = shuffled_test(shuffled_test(:, 1) == 1, :);
  diamonds  = shuffled_test(shuffled_test(:, 1) == 2, :);
  hearts    = shuffled_test(shuffled_test(:, 1) == 3, :);
  spades    = shuffled_test(shuffled_test(:, 1) == 4, :);

  clubs = clubs(1: floor(size(clubs,1)/2),:);
  spades = spades(1: floor(size(spades,1)/2),:);

  shuffled_test = [clubs ; diamonds ; hearts ; spades];

  shuffled_test = shuffled_test(randperm(size(shuffled_test, 1)), :);

  ercf_indep = bayescls(train, shuffled_test, @pdfindep, 0.25 * ones(1,4), 0.1);
  ercf_dep = bayescls(train, shuffled_test, @pdfdep, 0.25 * ones(1,4), 0.1);
  ercf_parzen = bayescls(train, shuffled_test, @pdfparzen, 0.25 * ones(1,4), 0.1);

  retval = [ercf_indep   ercf_dep   ercf_parzen];
endfunction
Run Code Online (Sandbox Code Playgroud)

用法

>> [errindep  errdep  errparzen] = select_red(train, test)
errindep =

    0.1089181   0.0029240   0.2309942

    error: element number 2 undefined in return list
Run Code Online (Sandbox Code Playgroud)

你能说出为什么会产生错误信息吗?

Lui*_*ndo 6

你从糟糕的功能中得到了太多的要求.你想要三个输出,它只能提供一个(这是一个包含三个数字的向量).