How to set an optional function input as a first input?

18 Ansichten (letzte 30 Tage)
Jennifer Taylor
Jennifer Taylor am 11 Sep. 2015
Kommentiert: Cedric am 12 Sep. 2015
I am trying to make a function with syntax similar to plot(ax, ...), where the handle to an axis can be included before the required inputs, but is optional. Such as:
function add2plot(ax, x, y, varargin)
Everything I have found forces the required inputs to be first, including inputParser and manual parsing of varargin. So how does plot() do it?? I am using ver. 2013b, where the handle is a double, and thus hard to distinguish from my numerical x input. The addition of varargin makes using nargin complicated.
Any input is appreciated!

Akzeptierte Antwort

Cedric
Cedric am 11 Sep. 2015
Bearbeitet: Cedric am 11 Sep. 2015
You can pass whatever you want to the parser; it doesn't get automatically what is passed to the function, but works on what you pass to its parse method. You have therefore the freedom to do something like:
function foo( varargin )
% - Extract first optional axes handle. Remove if present.
if ~isempty( varargin ) && ishandle( varargin{1} )
ax = varargin{1} ;
varargin = varargin(2:end) ;
else
ax = [] ;
end
% - Build input parser and parse remaining args.
parser = inputParser ;
parser.StructExpand = true ;
parser.CaseSensitive = false ;
parser.addRequired( .. ) ;
.. etc.
parser.parse( varargin{:} ) ; % Pass only remaining args.
args = parser.Results ;
% - ...
end
  4 Kommentare
Cedric
Cedric am 12 Sep. 2015
Thank you Walter, I had missed this information. It makes me realize that I should make a synthesis of all releases information since .. a long time ago, and scan/update/refactor a lot of projects!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Argument Definitions finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by