IDL 8.9에서는 상수(Constants)의 정의 기능에 있어서 업데이트된 사항들이 몇가지 있습니다. 그래서 관련된 주요 사항들을 정리하여 소개해보고자 합니다.
< 복소수(Complex Number)의 정의 >
기존의 IDL에서는 복소수를 정의하는데 있어서 COMPLEX 함수를 사용하는 것이 유일한 방법이었습니다. 예를 들어서 복소수 2-3i를 정의하는 방법은 다음과 같습니다.
a = COMPLEX(2, -3)
HELP, a
이렇게 하면 출력된 내용을 통하여 확인할 수 있듯이 변수 a는 복소수 2-3i를 담게 됩니다.
A COMPLEX = ( 2.00000, -3.00000)
그런데 IDL 8.9에서는 복소수를 정의하는 새로운 방법이 추가되었는데, 바로 알파벳 i 또는 j를 활용하는 방법입니다. 즉 다음과 같은 방식입니다.
a = 2-3i
HELP, a
이렇게 정의된 a는 역시 복소수 2-3i가 됩니다. 이 때 알파벳 i와 j 중 어느 것을 사용하든 결과는 동일합니다.
a = 2-3j
HELP, a
이와 같이 알파벳 i 또는 j 중 아무거나 사용하면 되고 대소문자의 구분도 없다는 점도 유념하면 됩니다. 즉 이와 같이 숫자와 알파벳 i 또는 j를 조합하여 직관적으로 복소수를 정의할 수 있는 기능이 IDL 8.9에서 추가되었다고 보면 됩니다. 다만 변수를 거쳐서 복소수를 정의한다든지 또는 복소수 배열을 정의한다든지 할 경우에는 여전히 COMPLEX 함수를 사용하는 것이 필요합니다. 예를 들면 실수부와 허수부의 값이 변수로 정의된 상태에서 복소수 정의를 할 경우는 다음과 같이 처리해야 합니다.
x = 2
y = -3
a = COMPLEX(x, y)
HELP, a
이 경우에도 여전히 a는 복소수 2-3i가 됩니다. 그리고 다수의 복소수값들로 구성된 배열을 생성하기 위하여 실수부 및 허수부의 값이 배열의 형태로 주어질 경우에는 다음과 같이 처리해야 합니다.
x = [1.7, 5.5, 4.8]
y = [8.2, 6.3, 2.9]
a = COMPLEX(x, y)
HELP, a
이렇게 하면 a는 복소수 3개로 구성된 배열이 됩니다.
A COMPLEX = Array[3]
따라서 IDL 8.9에서 도입된 직관적인 정의 방식과 함께 기존의 COMPLEX 함수도 경우에 따라서 적절히 활용을 하면 될 것 같습니다.
< 2진수, 8진수, 16진수 값의 정의 >
IDL에서 2진수(Binary), 8진수(Octal), 16진수(Hexadecimal)에 해당되는 값을 직접 정의하기 위해서는 기존에는 다음과 같은 문법을 사용해야 합니다. 예를 들어 2진수 1101를 정의하는 기존의 문법은 다음과 같습니다.
a = '1101'b
HELP, a
이렇게 하면 a는 10진수로는 13이라는 정수값에 해당됩니다.
A INT = 13
그런데 IDL 8.9에서는 이러한 정의를 위한 또 다른 새로운 문법이 도입되었습니다.
a = 0b1101
HELP, a
이와 같이 2진수가 될 숫자들 맨 앞에 0b를 붙이는 표기법입니다. 8진수, 16진수의 경우도 맥락은 비슷한데, 기존 문법과 새로운 문법을 한꺼번에 예제로 본다면 다음과 같습니다. 먼저 8진수의 예제입니다.
a = '237'o; 기존 문법
a = 0o237; 새로운 문법
HELP, a
이와 같이 8진수를 정의하기 위하여 0o로 시작하는 표기법을 사용하면 됩니다. 출력 결과를 보면 8진수 237은 10진수로는 159가 됩니다.
A INT = 159
그리고 16진수의 예제입니다.
a = '154'x; 기존 문법
a = 0x154; 새로운 문법
HELP, a
이와 같이 16진수를 정의하기 위하여 0x로 시작하는 표기법을 사용하면 됩니다. 출력 결과를 보면 16진수 154는 10진수로는 340이 됩니다.
A INT = 340
그리고 이 결과를 보면 340이라는 정수형 값으로 결과를 받게 되는데 다음과 같이 자료형별 알파벳을 뒤에 붙여서 형변환을 바로 적용할 수도 있습니다.
a = 0x154L
HELP, a
이렇게 하면 결과값은 340이지만 자료형은 일반 정수형 대신 긴 정수형(Long Integer)가 됩니다.
A LONG = 340
'IDL > Programming' 카테고리의 다른 글
HttpRequest 클래스 소개 (1) | 2024.12.09 |
---|---|
LABEL_DATE 함수의 활용법 (1) | 2024.09.24 |
IDL 8.9의 Literal Strings 문법 (0) | 2023.06.28 |
음수 범위를 로그 스케일(Log Scale)로 표시하기 (0) | 2023.04.25 |
WHILE 및 REPEAT 구문의 이해 (0) | 2023.02.10 |