IDL/Programming

새로운 배열 생성 방법 소개

이상우_IDL 2015. 1. 30. 16:09
728x90

IDL에서 배열을 생성하는데 있어서 새로운 방식이 최근 버전에서 도입되었는데 이 내용을 소개할까 합니다. 정확히는 8.3버전부터 도입된 것이므로 아시는 분들도 아마 계실 수 있지만 미처 모르시는 분들도 많을 것 같습니다. 예를 들어, 50부터 100까지의 범위에 해당되는 정수들로 구성된 배열을 IDL에서 생성할 때 우리가 전통적으로 써왔던 방식은 다음과 같습니다.

 

IDL> a = INDGEN(51) + 50

 

즉, 0~50의 범위를 갖는 정수 배열을 생성하고 여기에 50을 더해주는 방식입니다. 그런데 8.3 버전부터는 [] 및 :를 이용한 좀 더 직관적인 배열 생성이 가능해졌습니다. 위와 똑같은 작업을 이 방법을 사용하여 수행하는 방법은 다음과 같습니다.

 

IDL> a = [50:100]

 

아마 문구를 보기만 해도 어떤 방식인지 금방 알 수 있습니다. 즉, :을 중심으로 시작값과 끝값을 적고 []로 감싸주기만 하면 됩니다. 어떻습니까? 좀 더 간단하고 직관적인 방식이란 생각이 듭니다. 그리고 :을 뒤에 한번 더 붙여서 간격(increment)을 조정할 수도 있습니다. 예를 들어, 10부터 20까지 0.1의 간격을 갖는 실수들로 구성된 배열을 생성하고자 한다면 다음과 같이 하면 됩니다.

 

IDL> a = [10:20:0.1]

 

이와 같은 작업을 예전의 전통적인 방식으로 처리할 경우에는 다음과 같은 방법을 사용해왔습니다.

 

IDL> a = FINDGEN(101)*0.1+10

 

두 방법을 비교하면 후자의 경우도 당연히 좋은 방법이지만 배열의 구성원소들에 대한 느낌이 즉각적으로 와닿지는 않는 반면 전자의 경우는 바로 느낌이 온다는 장점이 있습니다. 따라서 배열 생성에 있어서 좀 더 직관적이고 간단한 방법이 도입되었다는 것은 좋은 현상이라 생각됩니다. 사실 이와 유사한 방식의 배열 생성이 가능한 다른 프로그래밍 언어들도 꽤 있는 것으로 압니다. IDL도 최근에는 이와 같은 현대적인 프로그래밍 언어들의 방식을 계속 차용하고 있는 추세인데, 이것도 같은 맥락으로 볼 수 있습니다. 물론 이 기능은 8.3버전부터 지원되기 때문에, 혹시나 그 이전 버전과의 호환이 중요한 경우에는 여전히 전통적인 방식도 필요하다는 점은 당연합니다. 하지만 유저 입장에서 선택의 폭이 더 넓어졌기 때문에 각자의 상황에 맞게 취사 선택해서 사용하면 좋을 것 같습니다.

LIST