Various inputs and outputs in functions

1 回表示 (過去 30 日間)
Jason
Jason 2017 年 9 月 9 日
編集済み: José-Luis 2017 年 9 月 9 日
Hi. I have several techniques to find spots on an image and rather than have say 5 different functions I want to create one and pass in a "method" flag. My question is that each different method has a different number of inputs and outputs. Im not sure how to handles these, and help is greatly appreciated.
function[p1,p2,p3,p4,p5]=objectDetections(handles,image,x,y,par1,par2,method)
if method==1
//perform method 1 - requires inputs handles,image,x,y
// returns p1,p2
elseif method==2
//perform method 2 - handles,image,x,y, par1
//returns p1,p3
elseif method==3
//perform method 3 - handles,image,x,y, par1, par2
//returns p1,p2,p3,p4,p5
end
  1 件のコメント
Stephen23
Stephen23 2017 年 9 月 9 日
The simplest, clearest, neatest solution: use a structure. This is what MATLAB uses for many advanced functions that support multiple options, (e.g. optimization, ODE's, etc), and is simple to implement.

サインインしてコメントする。

採用された回答

KSSV
KSSV 2017 年 9 月 9 日
編集済み: KSSV 2017 年 9 月 9 日
You have multiple options...one of the option is make output a structure....
function[out]=objectDetections(handles,image,x,y,par1,par2,method)
if method==1
//perform method 1 - requires inputs handles,image,x,y
out.p1 = p1;
out.p2 = p2;
elseif method==2
//perform method 2 - handles,image,x,y, par1
out.p1=p1;
out.p3=p3;
elseif method==3
//perform method 3 - handles,image,x,y, par1, par2
out.p1=p1;
out.p2=p2;
out.p3=p3;
out.p4=p4;
out.p5=p5;
end
You can also make output a cell.
  3 件のコメント
KSSV
KSSV 2017 年 9 月 9 日
Input also can be made a structure
Jason
Jason 2017 年 9 月 9 日
Thankyou

サインインしてコメントする。

その他の回答 (1 件)

José-Luis
José-Luis 2017 年 9 月 9 日
編集済み: José-Luis 2017 年 9 月 9 日
You could pass a structure to your function. The structure could contain whatever flags and arguments you need. Same goes for the output.
Slightly more cumbersome: a function can accept a variable number of arguments -> varargin

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by