How to assign default values to function inputs

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);

 채택된 답변

Jan
Jan 2016년 11월 30일
편집: Jan 2016년 11월 30일

3 개 추천

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

K E
K E 2016년 12월 2일
It is good to know that there is not in fact a shortcut via inputparser, and that if statements are a fine approach.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Argument Definitions에 대해 자세히 알아보기

제품

질문:

K E
2016년 11월 30일

댓글:

K E
2016년 12월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by