Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

arguments

함수 인수 유효성 검사 선언

구문

arguments
    argName1 (dimensions) dataType {validators} = defaultValue
    ...
    argNameN ...
end

arguments (Repeating)
    ... 
end

설명

예제

arguments ... end는 함수에 대한 입력 인수를 선언합니다. arguments 블록은 선택 사항입니다. arguments 블록을 포함할 경우 함수의 실행 가능한 첫 번째 라인 앞에 와야 합니다. 함수는 여러 개의 arguments 블록을 포함할 수 있습니다.

각 인수는 다음 구문에서 볼 수 있듯이 디폴트 값 또는 하나 이상의 제한 사항을 가질 수 있습니다.

argName (dimensions) dataType {validators} = defaultValue

  • (dimensions) — 입력 크기로, 둘 이상의 숫자가 쉼표로 구분된 목록으로 지정됩니다(예: (1,2), (3,5,2) 또는 (1,:)). 콜론을 사용하면 해당 차원에서 임의의 길이를 나타낼 수 있습니다. (dimensions)는 표현식을 포함할 수 없습니다.

    입력값의 차원은 (dimensions)와 정확히 일치하거나 (dimensions)로 지정된 크기와 호환되어야 합니다. 예를 들어, (1,:)은 입력값이 1×n 행 벡터여야 함을 지정하지만, n×1 열 벡터도 호환됩니다. 이 함수는 행 벡터 입력값을 열 벡터 입력값으로 형태 변경합니다. 마찬가지로, 크기 (2,3)은 스칼라 입력값을 허용하지만, 입력값을 2×3 행렬로 확장합니다. 자세한 내용은 기본 연산에 대해 호환되는 배열 크기 항목을 참조하십시오.

  • dataType — 데이터형으로, double과 같은 클래스 이름으로 지정됩니다. 입력값은 지정된 유형이거나 해당 유형으로 변환될 수 있는 유형이어야 합니다. 예를 들어, double을 지정하는 함수는 single형 값을 받아서 double형으로 변환합니다.

  • {validators}mustBeNumeric, mustBeScalar와 같은 유효성 검사 함수의 쉼표로 구분된 목록으로, 중괄호로 묶습니다. 유효성 검사 함수는 입력 인수가 조건과 일치하지 않는 경우 오류를 발생시킵니다. dataType과 달리 유효성 검사 함수는 입력 인수를 수정하지 않습니다. 유효성 검사 함수 목록은 인수 유효성 검사 함수 항목을 참조하십시오.

  • defaultValue — 디폴트 값은 지정된 크기, 유형 및 유효성 검사 규칙을 따라야 합니다. 디폴트 값은 표현식일 수도 있습니다. 디폴트 값을 지정하면 해당 인수가 선택 사항이 됩니다. 선택적 인수는 함수 시그니처와 arguments 블록에서 필수 인수 뒤에 위치해야 합니다.

이름-값 인수의 경우, argnv.name 형식을 사용합니다. 여기서 nv는 함수 시그니처의 구조체 이름이고 name은 arguments 블록의 인수 이름입니다. 예를 들어, options라는 구조체를 사용하여 이름-값 인수를 받는 함수를 정의해 보겠습니다.

y = myFunction(x,options)

arguments 블록에 이름-값 인수의 이름을 필드로 지정합니다.

arguments 
    x
    options.Name1
    options.Name2
end 

일반적으로 arguments 블록을 사용하는 방법에 대한 자세한 내용은 arguments 블록 구문 항목을 참조하십시오.

arguments (Repeating) ... end는 반복되는 인수를 선언합니다.

예를 들어, 반복 인수 X, Y, style을 갖는 함수 myplot을 만들 경우, 이 함수는 myplot(x1,y1,style1,x2,y2,style2)와 같이 3개 인수의 여러 세트를 받습니다. MATLAB®은 해당 인수에 대해 전달된 모든 값을 포함하는 셀형 배열을 만듭니다.

함수는 repeating arguments 블록을 하나만 포함할 수 있습니다. 함수가 반복 인수와 이름-값 인수를 모두 포함할 경우, repeating arguments 블록 뒤에 이름-값 인수를 위한 별도의 블록으로 선언합니다.

반복 인수에 대한 자세한 내용은 반복되는 인수 항목을 참조하십시오.

예제

모두 축소

입력값의 크기를 임의 길이의 행 벡터로 제한하는 함수를 작성합니다. 유효성 검사 함수를 사용하여 해당 벡터의 요소를 숫자형 값으로 제한합니다.

function [m,s] = twoStats(x)
    arguments
        x (1,:) {mustBeNumeric}
    end
    m = mean(x,"all");
    s = std(x,1,"all");
end

요소를 3개 가진 행 벡터에 대해 함수를 호출합니다.

a = [1 3 5];
[m,s] = twoStats(a)
m =

     3


s =

    1.6330

행 벡터와 열 벡터는 호환되기 때문에 열 벡터를 사용하여 함수를 호출하는 것도 유효합니다.

a = [1 3 5]';
[m,s] = twoStats(a)
m =

     3


s =

    1.6330

숫자가 아닌 값을 포함하는 벡터를 사용하여 함수를 호출할 경우 mustBeNumeric 유효성 검사 함수가 오류를 발생시킵니다.

a = ["1" "3" "5"];
[m,s] = twoStats(a)
Error using twoStats
Invalid argument at position 1. Value must be numeric.

함수에 대해 선택적인 이름-값 인수를 선언하려면 함수 선언에 구조체 이름을 포함하고, arguments 블록 내에서 인수 이름을 해당 구조체의 필드로 정의하십시오.

options를 구조체 이름으로 사용하여 myRectangle 함수를 선언합니다. options의 두 필드인 LineStyleLineWidth는 함수의 이름-값 인수의 이름입니다.

function myRectangle(X,Y,options)
    arguments
       X double
       Y double
       options.LineStyle (1,1) string = "-" 
       options.LineWidth (1,1) {mustBeNumeric} = 1
    end
    % Function code
    ...
end

두 인수 이름 모두 정의된 디폴트 값을 가지므로 둘 다 선택 사항입니다. 다음 구문은 모두 이 함수를 호출할 수 있는 유효한 방법입니다.

myRectangle(4,5)
myRectangle(4,5,"LineStyle",":","LineWidth",2)
myRectangle(4,5,"LineWidth",2,"LineStyle",":")
myRectangle(4,5,"LineStyle",":")
myRectangle(4,5,"LineWidth",2)

반복 인수란 함수 호출에서 0번 이상 반복될 수 있는 단일 인수 또는 인수 그룹입니다. fRepeat 함수는 인수 x, y, style의 반복되는 그룹을 받습니다. 입력 인수 xy를 double형 값으로 구성된 벡터 또는 double형으로 변환할 수 있는 값으로 구성된 벡터로 제한합니다. style을 문자열 "--"":"으로 제한합니다.

function fRepeat(x,y,style)
    arguments (Repeating)
        x (1,:) double
        y (1,:) double
        style {mustBeMember(style,["--",":"])}       
    end
    
    % Reshape the cell arrays of inputs and call plot function
    z = reshape([x;y;style],1,[]);
    if ~isempty(z)
        plot(z{:});
    end
end

fRepeat를 입력값 2개 그룹을 사용하여 호출합니다. MATLAB은 x에 대해 전달된 모든 값을 포함하는 셀형 배열, y의 값에 대한 또 다른 배열, 그리고 style의 값에 대한 세 번째 배열을 만듭니다. 그런 다음 함수는 이 배열들을 1×6 셀형 배열 z로 형태 변경하여 plot으로 전달합니다.

x1 = 1:10;
y1 = 1:10; 
s1 = ":"; 
x2 = 1:7;
y2 = 1:1.5:10;
s2 = "--";
fRepeat(x1,y1,s1,x2,y2,s2)

Plot showing two lines

제한 사항

  • 중첩 함수, 추상 메서드, 핸들 클래스 소멸자 메서드에서는 인수 블록이 지원되지 않습니다.

세부 정보

모두 축소

지원되는 데이터형

인수 선언에서는 임의의 MATLAB 클래스 또는 MATLAB이 지원하는 외부에서 정의된 클래스를 지정할 수 있습니다. 단, Java, COM 클래스, COM 클래스, MATLAB 버전 7.6 이전에 정의된 MATLAB 클래스(즉, classdef 키워드를 사용하지 않는 클래스 정의)는 예외입니다.

  • 데이터형 제한을 사용하면 입력 인수가 암시적으로 변환될 수 있습니다. 예를 들면 다음과 같습니다.

    function y = myFunction(inputArg1)
        arguments
            inputArg1 (1,1) double
        end
        ...
    이 함수의 경우, 문자열 "123"을 입력 인수로 전달하면 MATLAB은 문자열을 double형 숫자 값 123으로 변환합니다.

    유효성 검사 함수는 어떠한 방식으로도 입력값을 변경하지 않으므로, 데이터형 변환을 피하려면 데이터형 대신 하나 이상의 유효성 검사 함수를 사용하여 입력값을 제한하십시오. 예를 들면 다음과 같습니다.

    • 문자열이 숫자형 값으로 변환되지 않도록 하려면 mustBeA, mustBeFloat 또는 mustBeNumeric을 사용하십시오.

    • 숫자형 값이 문자열로 변환되지 않도록 하려면 mustBeText, mustBeTextScalar 또는 mustBeNonZeroLengthText를 사용하십시오.

    • 크기 변환을 방지하려면 mustBeVector 또는 mustBeScalarOrEmpty를 사용하십시오.

R2019b에 개발됨