반응형

IDL/Programming 77

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

IDL 8.9에서는 상수(Constants)의 정의 기능에 있어서 업데이트된 사항들이 몇가지 있습니다. 그래서 관련된 주요 사항들을 정리하여 소개해보고자 합니다. 기존의 IDL에서는 복소수를 정의하는데 있어서 COMPLEX 함수를 사용하는 것이 유일한 방법이었습니다. 예를 들어서 복소수 2-3i를 정의하는 방법은 다음과 같습니다. a = COMPLEX(2, -3) HELP, a 이렇게 하면 출력된 내용을 통하여 확인할 수 있듯이 변수 a는 복소수 2-3i를 담게 됩니다. A COMPLEX = ( 2.00000, -3.00000) 그런데 IDL 8.9에서는 복소수를 정의하는 새로운 방법이 추가되었는데, 바로 알파벳 i 또는 j를 활용하는 방법입니다. 즉 다..

IDL/Programming 2023.06.29

IDL 8.9의 Literal Strings 문법

IDL에서는 문자값을 정의할 때 항상 따옴표를 사용하는데, 따옴표는 싱글 또는 더블 모두 가능합니다. 즉 다음 두 경우는 모두 같은 결과를 출력합니다. PRINT, 'IDL 8.9 is now available' PRINT, "IDL 8.9 is now available" 그런데 만약 다음과 같은 문장을 출력하고 싶다고 합시다. There are 43 persons in this class 그리고 저 43이라는 값이 n이라는 변수에 저장된 상황을 가정합니다. 그러면 위와 같은 문장을 출력하기 위해서는 기존에는 다음과 같은 문법으로 처리해야 했습니다. n = 43 PRINT, 'There are '+STRTRIM(n, 2)+' persons in this class' 이것은 정수형 값 변수인 n을 문자값 ..

IDL/Programming 2023.06.28

음수 범위를 로그 스케일(Log Scale)로 표시하기

IDL에서 플롯 계열의 표출을 하는데 있어서 축(Axis)의 눈금을 로그(Log) 스케일로 표시하는 기능은 이미 예전부터 지원되어오고 있습니다. NG 체계의 PLOT 함수 및 DG 체계의 PLOT 프로시저 모두 /XLOG 및 /YLOG 키워드를 사용하여 설정하면 됩니다. 간단한 예제를 하나 본다면 다음과 같습니다. x = FINDGEN(11) y = x*450+500 win = WINDOW(DIMENSIONS=[600, 500], /NO_TOOLBAR) p = PLOT(x, y, YRANGE=[100, 10000], /YLOG, YTICKUNITS='exponent', $ SYMBOL='circle', /SYM_FILLED, COLOR='crimson', CLIP=0, FONT_SIZE=10, $ MAR..

IDL/Programming 2023.04.25

WHILE 및 REPEAT 구문의 이해

일반적으로 프로그래밍을 하면서 자주 하게 되는 작업 중 하나가 바로 반복 작업입니다. 물론 IDL에서도 여러가지 형태의 반복형 구문들이 지원됩니다. IDL에서 지원되는 반복형 구문들의 종류는 다음과 같습니다. FOR FOREACH WHILE REPEAT FOR 구문은 횟수제어형 즉 반복의 횟수를 미리 정해놓고 반복을 수행하는 방식이며 일반적으로 가장 많이 사용되는 반복형 구문입니다. FOREACH 구문은 배열을 대상으로 그 원소들의 갯수만큼만 반복을 수행하는 방식의 구문이며 자세한 내용은 관련 게시물을 참조하시면 됩니다. 그리고 WHILE 및 REPEAT 구문은 횟수를 미리 정해놓지않고 그 대신 특정한 조건을 걸고 반복을 수행하는 방식으로서 오늘은 이 두 종류의 구문들에 관해서 소개를 해보기로 하겠습니다..

IDL/Programming 2023.02.10

주프로그램과 부프로그램의 구성 및 운용 방식

우리가 IDL로 프로그래밍을 하다보면 프로그램을 하나만 만들어서 사용하는 경우도 있지만 다수의 프로그램들을 함께 사용해야하는 경우도 많습니다. 즉 각자의 역할을 담당하는 별도의 부프로그램들까지도 만들어서 함께 사용하는 방식입니다. 그런데 주프로그램과 부프로그램들을 어떤 방식으로 구성하여 사용하느냐에 있어서는 크게 두가지 방식이 있습니다. 1) 주프로그램과 부프로그램들이 모두 함께 하나의 파일 내에 존재하는 방식 2) 주프로그램과 부프로그램들 각각 개별 프로그램 파일로 존재하는 방식 먼저 1)과 같이 주프로그램과 부프로그램들이 모두 함께 하나의 파일 내에 존재하는 방식부터 봅시다. 간단한 예를 하나 들어보자면 다음과 같습니다. FUNCTION c_to_f, temp result = 1.8*temp + 32..

IDL/Programming 2022.04.01

작업을 위한 디렉토리의 설정 방법들

IDL에서의 작업에 있어서 디렉토리의 설정은 여러가지 측면에서 꽤 중요합니다. 작성한 프로그램 파일들(.pro 파일들)의 저장 또는 프로그램 내에서 읽거나 작성할 파일들의 위치 등을 제어하는데 있어서 반드시 필요하기 때문입니다. 오늘은 IDL에서 디렉토리 설정법에 관한 개요 및 몇가지 중요한 팁들을 소개해보도록 하겠습니다. IDL에서 "현재 디렉토리"는 말 그대로 IDL에서 현재 작업중인 디렉토리를 뜻합니다. 예를 들어 IDL에서 "파일 열기" 버튼을 눌러서 파일 브라우저를 띄우면 "현재 디렉토리" 내에 있는 프로그램 파일들이 우선적으로 보이게 됩니다. 그리고 IDL 프로그램에서 텍스트 또는 그림 파일을 저장하면 "현재 디렉토리" 내에 그 파일이 ..

IDL/Programming 2022.03.07

FILE_INFO 함수의 활용법

IDL에서는 파일들에 대한 접근(File Access)을 위한 여러가지 기능들이 내장되어 있는데, 이러한 기능들은 그 이름이 주로 "FILE_"이라는 문구로 시작합니다. 그 중에서 제가 예전에 FILE_SEARCH 함수에 관해서는 관련 게시물을 통하여 자세히 소개한 바 있습니다. 오늘은 동일 카테고리의 기능들 중 FILE_INFO 함수에 관하여 알아보고자 합니다. 이 함수는 이름 그대로 어떤 파일에 대한 여러가지 정보들을 추출하여 돌려주는 역할을 합니다. 그러면 지금부터 이 FILE_INFO 함수에 관하여 예제와 함께 소개해보도록 하겠습니다. 설명을 위하여 제 PC 내에서 myfiles라는 폴더를 만들고 그 안에 여러 개의 파일들을 넣어보았습니다. 파일 브라우저를 이용하여 이 폴더 내의 파일들의 목록을 ..

IDL/Programming 2022.03.02

HISTOGRAM 및 HIST_2D 함수의 활용 [2]

지난 회차에서는 HISTOGRAM 함수의 사용법 및 관련 예제를 소개하였고, 오늘은 이어서 HIST_2D 함수에 관하여 살펴보겠습니다. 지난 회에서도 언급했듯이 HISTOGRAM 함수와 HIST_2D 함수는 데이터에 대하서 구간별 빈도 분포를 집계한다는 점은 동일하지만 그 구간들을 1차원적으로 정의하느냐 2차원적으로 정의하느냐에 따른 차이입니다. 그리고 HIST_2D 함수는 아무래도 그 특성상 2차원적인 공간상에 분포하는 데이터를 대상으로 할 경우가 많습니다. 그러면 지금부터 HIST_2D 함수의 사용법 및 관련 예제를 살펴보도록 하겠습니다. 먼저 대상이 될 데이터는 X축 방향으로 대략 0~100 그리고 Y축 방향으로도 대략 0~100 사이의 범위 내에서 분포하는 1000개의 데이터 포인트들로 가정하였습..

IDL/Programming 2022.01.06

HISTOGRAM 및 HIST_2D 함수의 활용 [1]

우리가 데이터 분석 작업을 하는데 있어서 다수의 값들로 구성된 데이터에 대하여 값의 범위를 구간별로 나누어 각 구간별 빈도수를 확인해야 하는 경우가 많습니다. IDL에서는 HISTOGRAM 및 HIST_2D 함수가 그러한 역할을 합니다. 두 함수는 구간이 1차원적이냐 2차원적이냐의 차이라고 보면 되는데요. 오늘부터 2회에 걸쳐서 HISTOGRAM 및 HIST_2D 함수의 사용법 및 관련 예제들을 차례로 소개해보고자 합니다. 오늘은 먼저 HISTOGRAM 함수부터 살펴보겠습니다. 사실 HISTOGRAM 함수는 제가 이 블로그에 올린 여러 게시물들에서 활용된 바 있습니다. 다만 HISTOGRAM 함수 자체에 충실하게 소개했던 적은 의외로 없었기 때문에 이번이 좋은 기회인 것 같습니다. 일단 예제로 사용할 가..

IDL/Programming 2022.01.04

벡터(Vector)의 각도에 대한 정의 및 관련 이슈

오늘은 벡터(Vector)의 각도를 정의하는 몇가지 방식들에 관해서 얘길 해보고자 합니다. 특히 기상 분야에서 바람의 방향을 각도로 나타내는데 있어서 어떤 정의를 사용하느냐에 따라 그 값이 달라지는 경우가 가장 대표적인 사례인데요. 즉 벡터의 방향각을 정의하는 방식에 있어서는 원론적인 방식 외에도 기상학적 관점에서 사용되는 방식들도 있는데 이러한 방식들 사이에는 분명한 차이가 있습니다. 따라서 오늘은 이러한 이슈에 관해서 알아보고 IDL 코딩에 있어서는 어떤 방법으로 처리해야 할 것인가에 대해서도 함께 간략히 살펴보기로 하겠습니다. 일단 그림 하나를 먼저 보겠습니다. 이 그림은 우리가 벡터를 정의하는 원론적인 방식을 나타냅니다. 이러한 벡터의 방향은 U 성분과 V 성분으로 나눠지게 됩니다. 우리가 흔히 ..

IDL/Programming 2021.12.03