MATLAB Answers

K E
0

How to assign default values to function inputs

K E
さんによって質問されました 2016 年 11 月 30 日
最新アクティビティ K E
さんによって コメントされました 2016 年 12 月 2 日
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);

  0 件のコメント

サインイン to comment.

1 件の回答

Jan
Answer by Jan
on 30 Nov 2016
Edited by Jan
on 30 Nov 2016
 Accepted Answer

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 件のコメント

It is good to know that there is not in fact a shortcut via inputparser, and that if statements are a fine approach.

サインイン to comment.



Translated by