HOWTO · MATLAB
MATLAB에서 변수 유형 확인하는 방법
MATLAB에서 class(), whos, isa(), ischar(), isnumeric()을 사용해 변수의 클래스를 확인하고 조건을 검사하는 방법을 알아봅니다.
이 페이지의 내용
MATLAB 값의 클래스 이름을 확인하려면 class()를 사용하고, 현재 작업 공간의 변수들을 살펴보려면 whos를 사용합니다. 코드에서 특정 조건을 검사할 때는 isa(), ischar(), isnumeric() 같은 판별 함수를 사용하면 논리값을 얻을 수 있습니다. 값 하나의 클래스가 궁금한지, 작업 공간을 훑어보려는지, 조건에 따라 코드 흐름을 나누려는지에 맞춰 방법을 선택하세요.
MATLAB에서 class()로 변수의 클래스를 확인하기
class() 함수는 값의 클래스 이름을 문자 벡터로 반환합니다. 예를 들어 MATLAB에서 숫자 리터럴 42의 클래스는 double이고, 작은따옴표로 묶은 텍스트 'Hello, MATLAB!'은 클래스가 char인 문자 배열입니다. 다음 Octave 호환 스크립트에서는 한 흐름 안에서 클래스 확인과 판별 함수 사용을 보여 줍니다.
numericVar = 42;
charVar = 'Hello, MATLAB!';
fprintf('numericVar class: %s\n', class(numericVar));
fprintf('charVar class: %s\n', class(charVar));
fprintf('numericVar is double: %d\n', isa(numericVar, 'double'));
fprintf('charVar is a character array: %d\n', ischar(charVar));
fprintf('numericVar is numeric: %d\n', isnumeric(numericVar));
if isa(numericVar, 'double')
fprintf('Process numericVar as a double.\n');
end
numericVar class: double
charVar class: char
numericVar is double: 1
charVar is a character array: 1
numericVar is numeric: 1
Process numericVar as a double.
실제 클래스 이름 자체가 필요할 때는 class(value)를 사용하세요. 이 함수는 값 하나의 클래스만 알려 주며 작업 공간 전체를 나열하지는 않습니다.
MATLAB의 whos 명령으로 변수 유형 살펴보기
whos 명령은 현재 작업 공간의 변수 이름, 크기, 바이트 수, 클래스, 속성을 요약해 보여 줍니다. whos만 입력하면 작업 공간의 변수 목록을 확인하고, whos numericVar처럼 입력하면 이름을 지정한 변수 하나를 살펴볼 수 있습니다. 클래스 열을 보면 여러 값의 유형을 한꺼번에 비교하기 편합니다. 다만 현재 작업 공간이나 범위에서 볼 수 있는 변수만 표시하므로, 변수에 저장하지 않은 임의의 식을 직접 검사할 수는 없습니다. 그런 단일 값의 클래스가 궁금하다면 class(expression)을 사용하세요.
MATLAB에서 isa()로 특정 유형인지 검사하기
코드에서 값이 지정한 클래스에 속하는지 알아야 할 때는 isa(value, 'typeName')을 사용하세요. numericVar = 42, charVar = 'Hello, MATLAB!'인 경우 isa(numericVar, 'double')과 isa(charVar, 'char')는 논리 참을 반환하고, isa(numericVar, 'single')은 거짓을 반환합니다. 앞의 스크립트처럼 반환값을 if문의 조건으로 바로 사용할 수도 있습니다. isa()는 MATLAB 클래스의 상속 관계도 인식하므로 값의 정확한 클래스 이름이 아니더라도 상위 클래스나 인터페이스를 지정하면 참이 될 수 있습니다. 정확한 클래스 이름을 얻으려면 class(value)를 사용하세요.
MATLAB에서 ischar()로 문자 배열 확인하기
ischar() 함수는 입력값이 문자 배열인지 나타내는 논리값을 반환합니다. charVar = 'Hello, MATLAB!'일 때 ischar(charVar)는 참이고 ischar(42)는 거짓입니다. 함수가 문자 배열 입력을 기대한다면 if ischar(value)로 텍스트 처리 경로를 선택할 수 있습니다. 큰따옴표로 작성하는 MATLAB 문자열 배열은 문자 배열과 다른 유형이므로 이 검사에서 문자 배열로 판정되지 않습니다. 문자 벡터와 문자열 값을 모두 받을 수 있는 프로그램을 작성할 때 이 차이를 고려하세요.
MATLAB에서 isnumeric()으로 숫자 값 확인하기
값이 숫자 유형인지 검사하려면 isnumeric(value)를 사용하세요. 앞의 예에서 isnumeric(numericVar)는 참이고 isnumeric(charVar)는 거짓입니다. 이 판별 함수는 double, single, 정수 클래스 등 MATLAB의 숫자 클래스를 포함하지만, 값이 반드시 double이라는 뜻은 아닙니다. 논리값은 이 함수에서 숫자로 판정되지 않습니다. 특정 클래스가 필요하다면 isa(value, 'double')로 검사하거나 class(value)로 정확한 이름을 확인하세요.
결론
값 하나의 클래스 이름을 얻으려면 class()를, 현재 작업 공간의 변수를 살펴보려면 whos를 사용하세요. 코드에서 조건을 검사하려면 요구 사항에 맞는 isa(), ischar(), isnumeric()을 선택하면 됩니다. 각 도구가 답하는 질문은 서로 다릅니다. class()나 whos로 유형을 살펴보고, 프로그램이 확인해야 하는 조건에 맞는 판별 함수로 코드 흐름을 제어하세요.