Azzera filtri
Azzera filtri

Passing name-value arguments to a function that calls feval

8 visualizzazioni (ultimi 30 giorni)
Hello,
Is it possible to pass name-value arguments to a function that calls feval? If yes, what is the syntax? The problem looks like this:
% I want to pass any number of name-value pairs here
r = frun(@fA,argA1=2)
% ========================================================================
function r = frun(fh,varargin)
% Function that calls feval
r = feval(fh,varargin);
end
% ========================================================================
function resA = fA(namedArgs)
% Test function A
arguments
namedArgs.argA1 (1,1) double = 1
namedArgs.argA2 (1,1) double = 1
namedArgs.argA3 (1,1) double = 1
end
resA = namedArgs.argA1 + namedArgs.argA2 + namedArgs.argA3;
end
Thanks

Risposta accettata

Voss
Voss il 14 Apr 2022
Use varargin{:} to send the contents of varargin to the feval function as a comma-separated list of arguments.
% I want to pass any number of name-value pairs here
r = frun(@fA,argA1=2)
r = 4
% ========================================================================
function r = frun(fh,varargin)
% Function that calls feval
r = feval(fh,varargin{:});
end
% ========================================================================
function resA = fA(namedArgs)
% Test function A
arguments
namedArgs.argA1 (1,1) double = 1
namedArgs.argA2 (1,1) double = 1
namedArgs.argA3 (1,1) double = 1
end
resA = namedArgs.argA1 + namedArgs.argA2 + namedArgs.argA3;
end

Più risposte (0)

Categorie

Scopri di più su Argument Definitions in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by