Octave 변수

Octave 변수 (Variables)

변수는 값에 이름을 붙여서 나중에 다시 참조할 수 있게 해줘요. 앞선 많은 예시에서 이미 변수를 봤을 거예요.

출처: 문서

본문

변수 이름은 문자, 숫자, 밑줄의 연속이어야 하고, 숫자로 시작하면 안 돼요. Octave는 변수 이름 길이에 제한을 두지 않지만, 약 30자를 넘는 변수 이름이 유용한 경우는 드물어요. 다음은 모두 유효한 변수 이름이에요.

x
x15
__foo_bar_baz__
fucnrdthsucngtagdjb

하지만 __foo_bar_baz__처럼 밑줄 두 개로 시작하고 끝나는 이름은 Octave 내부용으로 예약된 것으로 간주돼요. 문서화된 Octave 내부 변수나 내장 기호 상수에 접근하는 경우가 아니라면, 직접 작성하는 코드에서 이런 이름을 쓰지 말아야 해요.

변수 이름에서 대소문자는 구별돼요. aA는 서로 다른 변수예요.

변수 이름은 그 자체로 유효한 표현식이에요. 그 변수의 현재 값을 나타내죠. 변수에는 대입 연산자(assignment operators)증가 연산자(increment operators) 로 새 값을 부여해요. 자세한 내용은 Assignment Expressions를 참고해요.

특별한 의미를 가진 자동 생성 변수가 하나 있어요. ans 변수는 항상 마지막 연산의 결과를 담는데, 그 출력이 어떤 변수에도 대입되지 않았을 때 그 결과를 담아요. 코드 a = cos (pi) 는 변수 a에 값 -1을 대입하지만 ans의 값은 바꾸지 않아요. 반면 코드 cos (pi)ans 값을 -1로 설정해요.

Octave의 변수는 고정된 형이 없어요. 그래서 같은 프로그램 안에서 처음에 어떤 변수에 숫자 값을 저장했다가 나중에 같은 이름으로 문자열 값을 담는 것도 가능해요. 변수는 값을 부여하기 전에는 사용할 수 없고, 그러면 오류가 발생해요.

자동 변수 ans

Automatic Variable: ans

명시적으로 어떤 변수에도 대입되지 않은, 가장 최근에 계산된 결과예요. 예를 들어 다음 표현식이 평가된 후에

3^2 + 4^2

ans가 반환하는 값은 25예요.

isvarname

tf = isvarname (name)

name이 유효한 변수 이름이면 true를 반환해요. 유효한 변수 이름은 문자, 숫자, 밑줄(_)로 구성되고 첫 문자가 숫자면 안 돼요.

Chapter 관련 함수 → iskeyword, exist, who

matlab.lang.makeValidName

varname = matlab.lang.makeValidName (str)
varname = matlab.lang.makeValidName (..., "ReplacementStyle", rs)
varname = matlab.lang.makeValidName (..., "Prefix", pfx)
[varname, ismodified] = matlab.lang.makeValidName (...)

str로부터 유효한 변수 이름 varname을 만들어요. 입력 str은 문자열이거나 문자열 셀 배열이어야 하고, 출력 varname도 같은 형이 돼요. 유효한 변수 이름은 숫자로 시작하지 않는 문자·숫자·밑줄의 연속이에요.

"ReplacementStyle" 옵션은 잘못된 문자를 어떻게 처리할지 지정해요. 허용되는 값은 다음과 같아요.

동작
"underscore" (기본) 모든 잘못된 문자를 밑줄(_)로 치환
"delete" 잘못된 문자를 제거
"hex" 잘못된 문자를 16진수 표현으로 치환

공백 문자는 항상 "ReplacementStyle" 적용 이전에 제거돼요. 공백 뒤에 오는 소문자는 대문자로 바뀌어요.

"Prefix" 옵션은 입력이 숫자로 시작할 때 앞에 붙일 문자열 pfx를 지정해요. pfx는 그 자체가 유효한 변수 이름이어야 해요. 기본 접두사는 "x"예요.

선택 출력 ismodifiedstr의 해당 요소가 유효한 이름이었는지 여부를 나타내는 논리 배열이에요.

Chapter 관련 함수 → iskeyword, isvarname, matlab.lang.makeUniqueStrings

matlab.lang.makeUniqueStrings

uniqstr = matlab.lang.makeUniqueStrings (str)
uniqstr = matlab.lang.makeUniqueStrings (str, ex)
uniqstr = matlab.lang.makeUniqueStrings (str, ex, maxlength)
[uniqstr, ismodified] = matlab.lang.makeUniqueStrings (...)

문자열 목록으로부터 고유한 문자열 목록을 구성해요. 입력 str은 문자열이거나 문자열 셀 배열이어야 하고, 출력 uniqstr도 같은 형이에요. 알고리즘은 두 번째 문자열에 밑줄(_)과 숫자 개수를 덧붙여 두 문자열을 고유하게 만들어요.

ex가 문자열이거나 문자열 셀 배열이면, uniqstr은 서로 사이에서 그리고 ex에 대해서도 고유한 요소들을 담게 돼요. exstr에 대한 인덱스 배열이나 논리 배열이면 고유하게 만들 str의 부분집합을 선택해요. 선택되지 않은 요소는 수정되지 않아요.

선택 입력 maxlengthuniqstr의 어떤 문자열의 최대 길이를 지정해요. 입력 문자열이 maxlength를 넘기지 않고는 고유하게 만들어질 수 없으면 오류가 발생해요.

선택 출력 ismodifiedstr의 각 요소가 고유하게 만들기 위해 수정되었는지를 나타내는 논리 배열이에요.

Chapter 관련 함수 → unique, matlab.lang.makeValidName

namelengthmax

n = namelengthmax ()

MATLAB 호환 최대 변수 이름 길이를 반환해요. Octave는 길이가 최대 2^{31} - 1인 문자열을 저장할 수 있어요. 하지만 MATLAB 호환성을 위해 모든 변수·함수·구조체 필드 이름은 namelengthmax가 반환하는 길이보다 짧아야 해요. 특히 MATLAB 파일 형식(*.mat)으로 저장되는 변수는 이름이 이 길이로 잘려요.

더 알아보기

  • Global Variables — 전역 변수
  • Persistent Variables — 영속 변수
  • Status of Variables — 변수 상태