Effacer les filtres
Effacer les filtres

Passing name-value arguments to a function that calls feval

8 vues (au cours des 30 derniers jours)
Alex Alex
Alex Alex le 13 Avr 2022
Commenté : Voss le 14 Avr 2022
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

Réponse acceptée

Voss
Voss le 14 Avr 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
  2 commentaires
Alex Alex
Alex Alex le 14 Avr 2022
Many thanks! Works as expected
Voss
Voss le 14 Avr 2022
You're welcome!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Argument Definitions dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by