inline function returning multiple output variables

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,

 채택된 답변

Matt J
Matt J 2023년 8월 25일
편집: Matt J 2023년 8월 25일
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

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.
Thanks vey much

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Function Creation에 대해 자세히 알아보기

제품

릴리스

R2023a

질문:

2023년 8월 25일

댓글:

2023년 8월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by