IDL/Programming

IDL 8.9에서 추가된 상수 정의 기능

이상우_idl 2023. 6. 29. 15:20
728x90
반응형

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

 

반응형