簡體   English   中英

錯誤:返回列表中未定義元素編號2

[英]error: element number 2 undefined in return list

以下功能產生錯誤。

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

用法

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

    0.1089181   0.0029240   0.2309942

    error: element number 2 undefined in return list

您能說出為什么會生成錯誤消息嗎?

您對功能欠佳的要求太多了。 您需要三個輸出,並且只能輸出一個(這是一個包含三個數字的向量)。

  • 如果希望函數將三個數字作為單獨的輸出產生,則將其聲明為

     [ercf_indep, ercf_dep, ercf_parzen] = select_red(train, test) 

    並在最后刪除行retval = ...

  • 如果您不想修改該函數,則需要使用一個輸出來調用它:

     out = select_red(train, test); 

    然后將輸出解壓縮為三個數字:

     ercf_indep_out = out(1) ercf_dep = out(2); ercf_parzen = out(3); 

    或者可以使用從單元格數組生成的逗號分隔列表來完成解壓縮:

     out_cell = num2cell(out); [ercf_indep_out, ercf_dep, ercf_parzen] = out_cell{:} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM