SMALL

IDL/Math 64

각도의 변환 (십진수와 DMS 단위) : EOS_EH_CONVANG 함수

우리가 각도(Angle)의 값을 나타낼 때 십진수 단위(Decimal)로 나타내는 방식과 도/분/초 단위(DMS)로 나타내는 방식이 공존합니다. 예를 들어서 십진수 단위의 각도 값이 27.5도인 경우 이 각도는 도/분/초 단위로는 27도 30분 00초가 됩니다. 그리고 이러한 단위 사이를 상호변환해야 하는 경우들이 종종 있습니다. IDL에서도 이러한 변환 기능을 담당하는 함수가 지원되는데 바로 EOS_EH_CONVANG 함수입니다. IDL 도움말에서 이 함수에 관한 내용을 찾아보면 기본적인 문법은 다음과 같습니다. Result = EOS_EH_CONVANG(inAngle, code) 여기서 inAng는 투입되는 각도이고 code는 변환 작업의 종류를 나타내는 코드번호입니다. 총 6종의 변환 기능들이 지원..

IDL/Math 2025.02.11

불규칙 간격의 1차원 데이터의 내삽

우리가 데이터 처리를 하다보면 불규칙한 간격으로 분포하고 있는 1차원 데이터를 규칙적인 간격의 1차원 데이터로 변환하는 것이 필요할 경우가 종종 있습니다. 물론 IDL에서도 이러한 처리가 가능한데 바로 INTERPOL 함수가 그러한 역할을 합니다. 참고로 INTERPOL 함수에 관해서는 제가 예전에 관련 게시물을 통하여 이미 소개를 한 바 있으며, 오늘 소개될 내용은 그 연장선에 있다고 보시면 됩니다. 그러면 예제 데이터와 함께 이러한 처리 방법을 살펴보겠습니다. 먼저 예제로 사용할 1차원 데이터는 다음과 같이 x 및 y라는 배열로 정의해봅니다. x = [1.2, 3.8, 4.9, 7.2, 8.5, 9.6, 12.4] y = [39.16, 82.46, 86.93, 44.41, 15.68, 5.89, 22..

IDL/Math 2024.08.26

TS_FCAST 함수 소개

시계열 데이터가 주어진 상태에서 이 값들을 기반으로 하여 미래의 값들을 예측하거나 과거의 값들을 추론하는 기법으로서 자기회귀 모델(Autoregressive Model)이라는 것이 있습니다. 이 기법에서는 주어진 데이터 값들을 선형적으로 묶어서 하나의 선형방정식을 만들고 이러한 방정식을 기반으로 하여 미래의 값 또는 과거의 값을 계산하게 됩니다. IDL에서도 이러한 자기회귀 모델 기법을 기반으로 한 기능함수가 지원되는데 그것이 바로 오늘 소개할 TS_FCAST 함수입니다. 그러면 이 함수를 사용하여 시계열 데이터에 대하여 자기회귀 모델을 기반으로 미래 또는 과거의 값들을 계산하는 방법을 간단한 예제와 함께 살펴보겠습니다. 먼저 예제로 사용할 시계열 데이터를 다음과 같이 정의해봅니다. y = [6.63, ..

IDL/Math 2024.08.21

플랑크(Planck) 복사량 법칙의 가시화

플랑크의 복사량 법칙(Planck's Radiation Law)은 잘 알려져있듯이 특정한 온도의 흑체(Black Body)로부터 방출되는 복사량을 모든 파장(또는 주파수)에 걸쳐서 계산하는 수식으로 표현됩니다. 그래서 이러한 수식을 플랑크 곡선의 형태로 표출한 그림은 각종 물리학 교과서나 웹페이지들에서 많이 볼 수 있습니다. 오늘은 플랑크 법칙을 기반으로 플랑크 곡선을 표출하는 작업을 IDL에서 직접 구현해보고자 합니다. 이 작업은 이론적인 수식을 프로그램에 반영하고 이를 기반으로 표출용 데이터를 생성하여 그림의 형태로 표출하는 일련의 과정이라고 볼 수 있습니다. 일단 결과의 티저부터 먼저 보면 대략 다음과 같은 그림을 표출해보고자 하는 것입니다. 일단 이 작업을 시작하기 위해서는 플랑크 법칙을 나타내는..

IDL/Math 2024.06.20

VALUE_LOCATE 함수 소개

오늘은 VALUE_LOCATE 함수를 소개해보고자 합니다. 이 함수의 역할은 점진적으로 증가 또는 감소하는 원소값들로 구성된 1차원 배열에 대하여 특정한 값이 위치한 구간을 찾아내는 것입니다. 그러면 이 함수의 역할을 예제와 함께 구체적으로 살펴보겠습니다. 예제로 사용할 1차원 배열은 다음과 같이 정의해봅시다. arr = [1:11]*10.+RANDOMU(-1, 11)*6-3 PRINT, arr  여기서 정의된 1차원 배열 arr은 다음과 같이 11개의 값들로 구성됩니다.    7.58579   17.6696   32.4743   40.3762   51.7342   60.1579   71.6800   81.6237   87.1076   98.7014   112.817 그리고 이 값들은 뒤로 갈수록 증가하..

IDL/Math 2024.06.07

증가 및 감소 연산자 (Increment and Decrement Operator)

증가 연산자(Increment Operator) 및 감소 연산자(Decrement Operator)는 원래 C나 자바 같은 프로그래밍 언어들에서 지원되는 연산자들인데, IDL에서도 6.0 버전부터 이러한 증감 연산자들이 지원되어오고 있습니다. 기호로는 ++ 및 --로 표기합니다. IDL에서 이러한 연산자들의 기본적인 개념은 타 언어에서와 거의 비슷합니다. 그러면 IDL에서 증가 및 감소 연산자들의 사용 방법 및 예제들을 살펴보기로 하겠습니다. 증가 및 감소 연산자는 변수 또는 배열에 대하여 적용이 가능합니다. 예를 들어 a라는 변수에 적용한다고 하면 그 방식은 a++, ++a, a--, --a 등과 같습니다. 다만 숫자값 자체에는 적용이 불가능하다는 것을 유의해야 합니다. 즉 23++과 같은 방식의 사용..

IDL/Math 2023.11.20

K-평균 군집화 분석 (K-means Clustering)

IDL에서 군집화 분석 작업을 하는 방법에 관하여 얼마전에 관련 게시물을 통하여 소개한 바 있습니다. 여기서는 계층적 군집 분석(Hierachical Clustering) 알고리즘을 기반으로 군집화를 수행하는 방법을 설명하였고, 이러한 작업을 위하여 DISTANCE_MEASURE, CLUSTER_TREE, DENDROGRAM 등의 기능들을 사용하는 방법 및 관련 예제들을 소개하였습니다. 그런데 IDL에서는 군집화 분석에 있어서 이러한 계층적 분석 기법 외에도 또 다른 기법을 사용할 수도 있습니다. 바로 K-평균 알고리즘을 바탕으로 하는 K-평균 군집화(K-means Clustering) 분석 기법입니다. 이 알고리즘은 웹상에서 검색을 해보면 "주어진 데이터를 k개의 클러스터로 묶는 알고리즘으로, 각 클러..

IDL/Math 2023.10.25

군집화(Clustering)와 덴드로그램(Dendrogram)

공간상에 여러 개의 데이터 포인트들이 흩어져있을 때 포인트와 포인트 사이의 거리를 측정하는 작업을 모든 쌍(pair)들에 대하여 수행하고 그 결과를 전달하는 역할을 하는 DISTANCE_MEASURE 함수에 관하여 얼마전에 소개한 바 있습니다. 그리고 이러한 기능은 군집화(Clustering) 및 Dendrogram의 구축이라는 작업의 기본이 된다는 언급도 함께 하였습니다. 오늘은 바로 이어서 DISTANCE_MEASURE 함수로 얻은 결과를 바탕으로 군집화(Clustering) 작업을 수행하고 그 결과를 덴드로그램(Dendrogram)이라는 형태로 가시화하는 과정도 살펴보고자 합니다. 일단 분석에 사용되는 샘플 데이터는 지난회 게시물에서 생성했던 것을 그대로 사용하기로 합니다. 그러면 가상의 샘플 데이..

IDL/Math 2023.10.19

DISTANCE_MEASURE 함수 소개

오늘은 DISTANCE_MEASURE 함수에 관한 소개를 해볼까 합니다. 이 함수는 공간상에 여러 개의 데이터 포인트들이 흩어져있을 때 포인트와 포인트 사이의 거리를 측정하는 작업을 모든 쌍(pair)들에 대하여 수행하고 그 결과를 전달하는 역할을 합니다. 참고로 이러한 기능은 군집화(Clustering) 및 Dendrogram의 구성과 같은 작업의 기본이 됩니다(이와 관련해서는 차후에 기회가 되면 별도로 다룰 예정입니다). DISTANCE_MEASURE 함수의 사용에 있어서 공간의 차원에는 제한이 없습니다. 즉 1차원부터 N 차원까지 모두 적용 가능합니다. 그러면 오늘은 2차원 공간상에 분포하는 가상의 데이터 포인트들을 대상으로 하여 DISTANCE_MEASURE 함수를 적용하는 예제를 살펴보기로 하겠..

IDL/Math 2023.10.12

Interpolation vs. Fitting

제가 이 블로그를 통해서 내삽 또는 보간(Interpolation)이라는 기법과 근사(Fitting)라는 기법을 IDL에서 사용하는 방법에 관하여 관련 내장함수들에 대한 소개 및 예제들을 여러 차례에 걸쳐 소개해드린 바 있습니다. 오늘은 이와 관련하여 조금은 원론적인 얘기를 해보고자 하는데요. 바로 내삽(Interpolation)과 근사(Fitting)의 차이점에 관한 것입니다. 사실 이 두가지 기법은 서로 비슷한 것처럼 느껴질 수도 있습니다. 물론 제가 수치계산 분야의 전문가는 아니기 때문에 학문적으로 완벽한 지식을 갖고 얘기할 수 있는 입장이 아니긴 하지만, 적어도 IDL에서 지원되는 관련 기능들의 관점에서 본다면 두 기법은 서로 완전히 다르다고 얘기할 수 있습니다. 예제 데이터 및 처리 결과를 보면..

IDL/Math 2021.08.02
728x90