how to not use all input arguments in the function because some of the arguments are fixed?
조회 수: 6 (최근 30일)
이전 댓글 표시
how to not use all input arguments in the function because some of the arguments are fixed?
채택된 답변
DGM
2022년 2월 16일
편집: DGM
2022년 2월 16일
If you're writing a function and want certain arguments to be optional (with internal defaults), read about varargin
From the scope of the function, varargin can be handled as a cell array. How you parse/validate its contents is up to your needs.
I generally assign all the parameters to their default values prior to parsing the inputs, overwriting the defaults as the user-defined values are collected from varargin.
댓글 수: 3
DGM
2022년 2월 16일
Unless area() is nested inside another function wherein B is defined, the above definition isn't available to it. It would either need to be explicitly passed to area(), or area() would need to internally define it such that it's a constant or a default for an optionally user-specified parameter.
As I doubt it really makes sense to have a rectangle area function that presumes the size of the rectangle, Steven's suggestion is probably more appropriate.
That said, I'll just offer this for sake of clarification anyway.
area(5,10)
area(5)
function [A] = area(varargin)
% A = area(height,{width})
% calculate the area of a rectangle
% if not specified, the width is assumed to be 20
B = 20; % default
narginchk(1,2);
switch nargin
case 1
h = varargin{1};
case 2
h = varargin{1};
B = varargin{2};
end
A = B*h;
end
추가 답변 (1개)
Steven Lord
2022년 2월 16일
편집: Steven Lord
2022년 2월 16일
You can use an anonymous function "adapter".
f = @(in1, in2) max(in1, in2); % I could have used @max
% but I wanted to be explicit
f_2p5 = @(x) f(x, 2.5); % Call f with the first input specified by
% the user and the second fixed by me as 2.5
f_2p5(1:5)
f(1:5, 2.5)
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Argument Definitions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!