developer tip

MATLAB 함수의 선택적 인수

optionbox 2020. 12. 11. 08:04
반응형

MATLAB 함수의 선택적 인수


선택적 인수를 사용하여 MATLAB에서 함수를 선언하려면 어떻게해야합니까?

예 : function [a] = train(x, y, opt), 여기서 opt는 선택적 인수 여야합니다.


이를 수행하는 방법에 대한 몇 가지 다른 옵션이 있습니다. 가장 기본적인 방법은를 사용한 varargin다음 nargin, size등을 사용하여 선택적 인수가 함수에 전달되었는지 여부를 확인하는 것입니다.

% Function that takes two arguments, X & Y, followed by a variable 
% number of additional arguments
function varlist(X,Y,varargin)
   fprintf('Total number of inputs = %d\n',nargin);

   nVarargs = length(varargin);
   fprintf('Inputs in varargin(%d):\n',nVarargs)
   for k = 1:nVarargs
      fprintf('   %d\n', varargin{k})
   end

좀 더 우아하게 보이는 솔루션은 inputParser클래스 를 사용하여 필수 및 선택적 함수에서 예상하는 모든 인수를 정의하는 것입니다. inputParser또한 모든 인수에 대해 유형 검사를 수행 할 수 있습니다.


이를 수행하는 간단한 방법은 nargin (N 인수 입력)을 사용하는 것입니다. 단점은 인수 목록과 nargin 검사가 일치하는지 확인해야한다는 것입니다.

모든 입력은 선택 사항이지만 설정되지 않은 변수를 호출하면 함수가 오류와 함께 종료된다는 점을 기억할 가치가 있습니다. 다음 예제는 b 및 c의 기본값을 설정합니다. 가 없으면 종료됩니다.

function [ output_args ] = input_example( a, b, c )
if nargin < 1
  error('input_example :  a is a required input')
end

if nargin < 2
  b = 20
end

if nargin < 3
  c = 30
end
end

이것에 대한 좋은 방법은를 사용하지 않고를 사용 nargin하여 변수가 설정되었는지 확인하는 것 exist('opt', 'var')입니다.

예:

function [a] = train(x, y, opt)
    if (~exist('opt', 'var'))
        opt = true;
    end
end

이런 식으로 수행하는 전문가는이 답변을 참조하십시오. 함수 호출에서 인수가 제공되는지 확인하는 방법은 무엇입니까?

참고 URL : https://stackoverflow.com/questions/6764062/optional-args-in-matlab-functions

반응형