return many value in function.

1 Ansicht (letzte 30 Tage)
Khairul Nur
Khairul Nur am 5 Nov. 2019
Bearbeitet: Steven Lord am 5 Nov. 2019
hi, i have this main function that called calc_centroid(data) as folow:
[cc1,cc2,cc3,cc4] = calc_centroid(data) %is it correct syntax to accept the return value?
Meanwhile in the function define as follow:
function [c1,c2,c3,c5] = calc_centroid(data)
k1_1= sum(data{1:10,{'Var1'}})/10
k1_2= sum(data{1:10,{'Var2'}})/10
k1_3= sum(data{1:10,{'Var3'}})/10
k1_4= sum(data{1:10,{'Var4'}})/10
k1_5= sum(data{1:10,{'Var5'}})/10
k1_6= sum(data{1:10,{'Var6'}})/10
k1_7= sum(data{1:10,{'Var7'}})/10
k1_8= sum(data{1:10,{'Var8'}})/10
k1_9= sum(data{1:10,{'Var9'}})/10
k1_10= sum(data{1:10,{'Var10'}})/10
k2_1= sum(data{11:20,{'Var1'}})/10
k2_2= sum(data{11:20,{'Var2'}})/10
k2_3= sum(data{11:20,{'Var3'}})/10
k2_4= sum(data{11:20,{'Var4'}})/10
k2_5= sum(data{11:20,{'Var5'}})/10
k2_6= sum(data{11:20,{'Var6'}})/10
k2_7= sum(data{11:20,{'Var7'}})/10
k2_8= sum(data{11:20,{'Var8'}})/10
k2_9= sum(data{11:20,{'Var9'}})/10
k2_10= sum(data{11:20,{'Var10'}})/10
k3_1= sum(data{21:30,{'Var1'}})/10
k3_2= sum(data{21:30,{'Var2'}})/10
k3_3= sum(data{21:30,{'Var3'}})/10
k3_4= sum(data{21:30,{'Var4'}})/10
k3_5= sum(data{21:30,{'Var5'}})/10
k3_6= sum(data{21:30,{'Var6'}})/10
k3_7= sum(data{21:30,{'Var7'}})/10
k3_8= sum(data{21:30,{'Var8'}})/10
k3_9= sum(data{21:30,{'Var9'}})/10
k3_10= sum(data{21:30,{'Var10'}})/10
k4_1= sum(data{31:40,{'Var1'}})/10
k4_2= sum(data{31:40,{'Var2'}})/10
k4_3= sum(data{31:40,{'Var3'}})/10
k4_4= sum(data{31:40,{'Var4'}})/10
k4_5= sum(data{31:40,{'Var5'}})/10
k4_6= sum(data{31:40,{'Var6'}})/10
k4_7= sum(data{31:40,{'Var7'}})/10
k4_8= sum(data{31:40,{'Var8'}})/10
k4_9= sum(data{31:40,{'Var9'}})/10
k4_10= sum(data{31:40,{'Var10'}})/10
c1 = [k1_1 k1_2 k1_3 k1_4 k1_5 k1_6 k1_7 k1_8 k1_9 k1_10]
c2 = [k2_1 k2_2 k2_3 k2_4 k2_5 k2_6 k2_7 k2_8 k2_9 k2_10]
c3 = [k3_1 k3_2 k3_3 k3_4 k3_5 k1_6 k3_7 k3_8 k3_9 k3_10]
c4 = [k4_1 k4_2 k4_3 k4_4 k4_5 k4_6 k4_7 k4_8 k4_9 k4_10]
end
however, there is error said :
Output argument "c5" (and maybe others) not assigned during call to "calc_centroid".
Error in mainKmeans (line 26)
[cc1,cc2,cc3,cc4] = calc_centroid(data)
emm..i never use c5, howcome the error stated c5? and do i use the return value correcly. BTW iam not sure how to solve this error. TQIA for your attention.Please do help me :(

Akzeptierte Antwort

ME
ME am 5 Nov. 2019
You do have c5 in your function line. It currently says:
function [c1,c2,c3,c5] = calc_centroid(data)
Perhaps, just swapping that for a c4 will do the trick?
  1 Kommentar
Khairul Nur
Khairul Nur am 5 Nov. 2019
mybad, do not notice that..its working after changing to c4

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Steven Lord
Steven Lord am 5 Nov. 2019
Bearbeitet: Steven Lord am 5 Nov. 2019
k1_1= sum(data{1:10,{'Var1'}})/10
k1_2= sum(data{1:10,{'Var2'}})/10
k1_3= sum(data{1:10,{'Var3'}})/10
k1_4= sum(data{1:10,{'Var4'}})/10
Numbered variables like this are a code smell.
Based on this syntax I believe your data variable is a table or timetable. If that's the case extract all the variables from the table into an array (if they can be concatenated together); use indexing with a vector of table variable names, variable indices, or vartype; or use varfun.
data = array2table(reshape(1:100, [10 10]));
% First approach
k_first = sum(data.Variables, 1)
% Second approach
varNames = {'Var1', 'Var2', 'Var3', 'Var4', 'Var5', ...
'Var6', 'Var7', 'Var8', 'Var9', 'Var10'};
k_second_names = sum(data{:, varNames}, 1)
k_second_numeric = sum(data{:, 1:10}, 1)
k_second_vartype = sum(data{:, vartype('numeric')}, 1)
% Third approach
k_third = varfun(@sum, data, 'OutputFormat', 'uniform')

Kategorien

Mehr zu Tables finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by