Azzera filtri
Azzera filtri

Various inputs and outputs in functions

2 visualizzazioni (ultimi 30 giorni)
Jason
Jason il 9 Set 2017
Modificato: José-Luis il 9 Set 2017
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 Commento
Stephen23
Stephen23 il 9 Set 2017
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.

Accedi per commentare.

Risposta accettata

KSSV
KSSV il 9 Set 2017
Modificato: KSSV il 9 Set 2017
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 Commenti
KSSV
KSSV il 9 Set 2017
Input also can be made a structure

Accedi per commentare.

Più risposte (1)

José-Luis
José-Luis il 9 Set 2017
Modificato: José-Luis il 9 Set 2017
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

Community Treasure Hunt

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

Start Hunting!

Translated by