inline function returning multiple output variables

7 visualizzazioni (ultimi 30 giorni)
tdata = table(["US";"US";"US";"UK";"UK";"TW";"TW";"TW";"TW"], [1;1;5;1.20000000000000;3;4;5;1;2],'VariableNames',{'name','Loss'});
tecdf = @(x) ecdf( x, 'Function', 'survivor');
tout = varfun( tecdf, tdata, 'GroupingVariables','name','Input','Loss')
tout = 11×3 table
name GroupCount Fun_Loss ____ __________ ________ "TW" 4 1 "TW" 4 0.75 "TW" 4 0.5 "TW" 4 0.25 "TW" 4 0 "UK" 2 1 "UK" 2 0.5 "UK" 2 0 "US" 3 1 "US" 3 0.33333 "US" 3 0
tout only contains the first output from ecdf function. Is there a way to have it returns both output variables?
Thanks,

Risposta accettata

Matt J
Matt J il 25 Ago 2023
Modificato: Matt J il 25 Ago 2023
A wrapper is needed.
tdata = table(["US";"US";"US";"UK";"UK";"TW";"TW";"TW";"TW"], [1;1;5;1.20000000000000;3;4;5;1;2],'VariableNames',{'name','Loss'});
tecdf = @(x) ecdfWrapper( x, 'Function', 'survivor');
tout = varfun( tecdf, tdata, 'GroupingVariables','name','Input','Loss')
tout = 11×3 table
name GroupCount Fun_Loss ____ __________ __________________ "TW" 4 1 1 "TW" 4 0.75 1 "TW" 4 0.5 2 "TW" 4 0.25 4 "TW" 4 0 5 "UK" 2 1 1.2 "UK" 2 0.5 1.2 "UK" 2 0 3 "US" 3 1 1 "US" 3 0.33333 1 "US" 3 0 5
function out=ecdfWrapper(x,varargin)
[o1,o2]=ecdf( x, varargin{:});
out=[o1,o2];
end
  3 Commenti
Image Analyst
Image Analyst il 25 Ago 2023
Rather than have to have an anonymous function use a wrapper function, why not just make the anonymous function into a regular function? Then there's no need for the anonymous function anymore.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Function Creation in Help Center e File Exchange

Prodotti


Release

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by