Effacer les filtres
Effacer les filtres

How to assign default values to function inputs

76 vues (au cours des 30 derniers jours)
K E
K E le 30 Nov 2016
Commenté : K E le 2 Déc 2016
I have a function with some required inputs,
heatContent = function(swRadiation, lwRadiation)
If the user passes in [] for any of the inputs, I would like to substitute default values (swRadiation=100 or lwRadiation=50). Also if the user only passes in 1 input, I would substitute in lwradiation=50 for the second input. I believe I can use inputparser to do this, but the following gives an error (Undefined function or variable 'lwRadiation'). I could write a long chain of if/elseif statements but suspect there is a more compact way.
p = inputparser;
addOptional(p,'swRadation',50);
addOptional(p,'lwRadiation',100);

Réponse acceptée

Jan
Jan le 30 Nov 2016
Modifié(e) : Jan le 30 Nov 2016
How should the code decide which input was given, when you provide one input only?
The inputParser is a powerful tool. But hard coding is not complicated here:
function heatContent = function(swRadiation, lwRadiation)
switch nargin
case 0
swRadiation = [];
lwRadiation = [];
case 1
lwRadiation = [];
case 2
otherwise
error('2 inputs are accepted.')
end
if isempty(swRadiation)
swRadiation = 50;
end
if isempty(lwRadiation)
lwRadiation = 100;
end
...
The inputParser expects name-value pairs to identify the inputs. This allows to change the order of the inputs and you can provide the 2nd input only without ambiguities.
  1 commentaire
K E
K E le 2 Déc 2016
It is good to know that there is not in fact a shortcut via inputparser, and that if statements are a fine approach.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

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

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by