Set default value if no function input given
조회 수: 26 (최근 30일)
이전 댓글 표시
I want my function to use default values if no input variables are passed. I have done this in the past using the 'nargin' function. I prefer this approach to using the 'isempty' function. For some reason my code now returns an error when I only input 't' because the varargin{} arrays are technically empty. This error makes sense, but I don't understand how to get around it as I thought the if/else statements would take care of that. How can I debug this?
Error: Index exceeds the number of array elements (0).
function [V, varargout] = HH(t, varargin)
if nargin < 1
V0 = -60;
else
V0 = varargin{1};
end
if nargin < 2
I = 0;
else
I = varargin{2};
end
댓글 수: 0
채택된 답변
Stephen23
2021년 2월 7일
편집: Stephen23
2021년 2월 7일
You did not count the input t when using nargin. You can include the number of inputs before varargin in the logical comparisons:
if nargin < 2 % not 1 !!!!
V0 = -60;
else
V0 = varargin{1};
end
if nargin < 3 % not 2 !!!
I = 0;
else
I = varargin{2};
end
Or change the operator to <= (assuming exactly one input before varargin):
if nargin <= 1 % not <
V0 = -60;
else
V0 = varargin{1};
end
if nargin <= 2 % not <
I = 0;
else
I = varargin{2};
end
Another approach is to simply count the number of elements in varargin, which means that you can write code that is robust against future changes too, because you can change how many inputs there are before varargin.
if numel(varargin) < 1 % not NARGIN
V0 = -60;
else
V0 = varargin{1};
end
if numel(varargin) < 2 % not NARGIN
I = 0;
else
I = varargin{2};
end
댓글 수: 2
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Whos에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!