[英]error: element number 2 undefined in return list
The following function is generating an error. 以下功能产生错误。
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
Usage 用法
>> [errindep errdep errparzen] = select_red(train, test)
errindep =
0.1089181 0.0029240 0.2309942
error: element number 2 undefined in return list
Can you tell why is it generating an error message? 您能说出为什么会生成错误消息吗?
You are asking too much from the poor function. 您对功能欠佳的要求太多了。 You want three outputs and it can only deliver one (which is a vector containing three numbers).
您需要三个输出,并且只能输出一个(这是一个包含三个数字的向量)。
If you want the function to produce the three numbers as separate outputs, declare it as 如果希望函数将三个数字作为单独的输出产生,则将其声明为
[ercf_indep, ercf_dep, ercf_parzen] = select_red(train, test)
and remove the line retval = ...
at the end. 并在最后删除行
retval = ...
If you don't want to modify the function, you need to call it with one output: 如果您不想修改该函数,则需要使用一个输出来调用它:
out = select_red(train, test);
Then unpack that output into three numbers: 然后将输出解压缩为三个数字:
ercf_indep_out = out(1) ercf_dep = out(2); ercf_parzen = out(3);
Or the unpacking can be done using a comma-separated list generated from a cell array: 或者可以使用从单元格数组生成的逗号分隔列表来完成解压缩:
out_cell = num2cell(out); [ercf_indep_out, ercf_dep, ercf_parzen] = out_cell{:}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.