이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

명령 구문과 함수 구문

명령 구문 및 함수 구문

MATLAB®에서 다음 명령문은 서로 동일합니다.

load durer.mat        % Command syntax
load('durer.mat')     % Function syntax

이러한 동일성은 명령과 함수의 쌍대성(Command-function Duality)이라고도 합니다.

다음과 같은 표준 함수 구문이 모든 함수에서 지원됩니다.

[output1, ..., outputM] = functionName(input1, ..., inputN)

함수의 출력값이 필요하지 않고 모든 입력값이 문자형 벡터(즉, 작은따옴표로 묶인 텍스트)인 경우 다음과 같이 더 간단한 명령 구문을 사용할 수 있습니다.

functionName input1 ... inputN

명령 구문에서 입력값은 쉼표가 아닌 공백으로 구분하며 입력 인수는 괄호로 묶지 않습니다. 명령 구문은 항상 입력값을 문자형 벡터로 전달합니다. string형을 입력값으로 사용하려면 함수 구문을 사용하십시오. 문자형 벡터에 공백이 포함된 경우에는 함수 구문을 사용하십시오. 예를 들면 다음과 같습니다.

함수 입력값이 변수이면 함수 구문을 사용하여 값을 함수에 전달해야 합니다. 명령 구문은 항상 입력값을 문자형 벡터로 전달하며, 변수 값을 전달할 수 없습니다. 예를 들어, 변수를 생성하고 변수 값을 전달하는 함수 구문을 사용하여 disp 함수를 호출해 보겠습니다.

A = 123;
disp(A)

이 코드는 예상했던 결과를 반환합니다.

123

명령 구문을 사용하여 A의 값을 전달할 수는 없습니다. 그 이유는 다음 호출은

disp A

다음과 동일하고,

disp('A')

다음을 반환하기 때문입니다.

A

흔히 발생하는 명령 구문 관련 실수 방지하기

작업 공간에 다음 변수가 포함되어 있다고 가정하겠습니다.

filename = 'accounts.txt';
A = int8(1:8);
B = A;

다음 표에서는 명령 구문이 일반적으로 잘못 쓰이는 예를 보여줍니다.

다음 명령은...다음과 동일함값 전달을 위한 올바른 구문
open filenameopen('filename')open(filename)
isequal A Bisequal('A','B')isequal(A,B)
strcmp class(A) int8strcmp('class(A)','int8')strcmp(class(A),'int8')
cd matlabrootcd('matlabroot')cd(matlabroot)
isnumeric 500isnumeric('500')isnumeric(500)
round 3.499round('3.499')(round([51 46 52 57 57])과 동일함)round(3.499)
disp hello worlddisp('hello','world')disp('hello world')
disp "string"disp('"string"')disp("string")

변수 이름 전달

save, load, clear, whos와 같은 일부 함수는 변수 이름에 문자형 벡터를 사용해야 합니다. 예를 들면 다음과 같습니다.

whos -file durer.mat X

이 명령은 예제 파일 durer.mat에서 변수 X에 대한 정보를 요청합니다. 이 명령은 다음과 동일합니다.

whos('-file','durer.mat','X')

MATLAB의 명령 구문 인식 체계

모호하게 여겨질 수 있는 명령문을 살펴보겠습니다.

ls ./d

이 명령문은 폴더 ./d를 인수로 사용하는 ls 함수에 대한 호출일 수 있습니다. 이 명령문은 또한 변수 d를 제수로 사용하여 배열 ls에 대한 요소별 나누기를 요청할 수 있습니다.

명령줄에서 이러한 명령문을 실행하면 MATLAB이 현재 작업 공간과 경로에 액세스하여 lsd가 함수인지 아니면 변수인지를 확인할 수 있습니다. 그러나 코드 분석기 및 편집기/디버거와 같은 일부 구성요소는 경로나 작업 공간을 참조하지 않고 동작합니다. 이런 경우, MATLAB은 표현식이 명령 구문을 사용한 함수 호출인지 여부를 확인하기 위해 구문 규칙을 사용합니다.

일반적으로, MATLAB은 식별자(함수나 변수의 이름도 식별자가 될 수 있음)를 인식할 때 다음과 같이 식별자 다음에 오는 문자를 분석하여 표현식의 유형을 확인합니다.

  • 등호(=)는 대입식을 의미합니다. 예를 들면 다음과 같습니다.

    ls =d
  • 식별자 다음에 있는 여는 괄호는 함수 호출을 의미합니다. 예를 들면 다음과 같습니다.

    ls('./d')
  • 식별자 다음에 공백이 있고 잠재적 연산자 다음에 공백이 없는 경우는 명령 구문을 사용하는 함수 호출을 의미합니다. 예를 들면 다음과 같습니다.

    ls ./d
  • 잠재적 연산자 양쪽에 공백이 있거나 연산자 양쪽 어디에도 공백이 없는 경우는 변수에 대한 연산을 의미합니다. 예를 들어, 다음 명령문은 서로 동일합니다.

    ls ./ d
    
    ls./d

따라서, 모호하게 여겨질 수 있는 명령문 ls ./dls 함수에 대한, 명령 구문을 사용한 호출입니다.

모호성을 없애는 가장 좋은 방법은 흔히 사용하는 함수와 충돌하지 않도록 변수 이름을 정의하는 것입니다.