MATLAB Answers


How to assign default values to function inputs

さんによって質問されました 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;

  0 件のコメント

サインイン to comment.

1 件の回答

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
error('2 inputs are accepted.')
if isempty(swRadiation)
swRadiation = 50;
if isempty(lwRadiation)
lwRadiation = 100;
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