How to create function with name-value pair arguments?
340 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Pavel M
am 21 Dez. 2019
Beantwortet: Voss
am 27 Mär. 2024
Hello. I want to create the function like
function [x1, x2] = fun('name',varargin,'name',[..],'name',[..])
How i can do it?
1 Kommentar
Simon Skillen
am 26 Mär. 2024
Bearbeitet: Walter Roberson
am 27 Mär. 2024
I'd use the function argument method as described in https://de.mathworks.com/help/matlab/matlab_prog/function-argument-validation-1.html
Akzeptierte Antwort
Walter Roberson
am 21 Dez. 2019
Bearbeitet: Walter Roberson
am 21 Dez. 2019
Note: in R2019b and later, see the new arguments keyword
0 Kommentare
Weitere Antworten (3)
Christopher Rowley
am 1 Dez. 2021
To provide some sample code on how to do this with data in a structure, here is an example. We are have two variables 'x' and 'z' that are stored in structure 'params', and a test function looks to compute x+z +5. I have a simple check that the name is type character, but you can add more, or tailor to your needs. The function would look like:
function y = testfunction( params, varargin)
% set up name-value pairs for varargin.
for i = 1:2:length(varargin) % work for a list of name-value pairs
if ischar(varargin{i}) % check if is character
params.(varargin{i}) = varargin{i+1}; % override or add parameters to structure.
end
end
y = params.z + params.x + 5;
And to try it, use:
params.x = 5;
params.z = 10;
testfunction( params) % try function
testfunction( params, 'x', 1) % try changing x from what it was set in the params structure.
In this example, the results should be 20, and 16, where the difference comes from the fact that x was decreased by 4 in the second function call.
0 Kommentare
Black Woods
am 17 Dez. 2022
function db=name_value_pairs(varargin)
if isempty(varargin) || mod(length(varargin),2)==1
db={};
return
end
jj=1;
for ii=1:2:length(varargin)
if isa(varargin{ii},'char')
db{jj,1}=varargin{ii};db{jj,2}=varargin{ii+1};jj=jj+1;
else
db={};
return
end
end
0 Kommentare
Voss
am 27 Mär. 2024
fcn('name','booey','professional_life','noine','personal_life',2,'tooth_size','XXXL')
fcn('name','Fred','home_planet','Mars','temper_quotient',Inf)
function fcn(varargin)
args = reshape(varargin,2,[]);
p = struct(args{:})
% do something with structure p
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!