반응형

IDL/Math 59

증가 및 감소 연산자 (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

INTERPOL 함수를 이용한 1차원 내삽(1-d Interpolation)

내삽 또는 보간이라고 부르는 Interpolation이라는 기법에 대해서는 아마 많이들 알고 계시리라 생각합니다. 공간 또는 시간적인 분포를 하는 데이터가 주어진 상태에서, 원래 데이터 값이 존재하지 않던 특정한 위치에 대한 값을 계산하여 추정하는 기법이라고 할 수 있습니다. 특히 공간 분포의 관점에서 본다면 원론적으로는 1차원, 2차원, 3차원 등 모든 차원에 대하여 원리 자체는 동일하다고 볼 수 있습니다. 사실 2차원 데이터를 기반으로 한 내삽 기법에 관해서는 제가 예전에 관련 게시물을 작성하여 올린 바 있습니다. 오늘은 가장 기본이 된다고 볼 수 있는 1차원 데이터에 대한 내삽 기법에 관하여 관련 예제와 함께 소개해보기로 하겠습니다. IDL에서 1차원 내삽 기법에 해당되는 기능 함수는 바로 INTE..

IDL/Math 2021.07.26

MEDIAN 함수에 의한 중간값 산출에 관한 유의사항

IDL의 MEDIAN 함수는 중간값(Median Value)을 산출하는 역할을 하는 내장함수입니다. 즉 대상 배열이 있을 때 그 배열 값들을 크기 순서로 오름차순 또는 내림차순으로 나열했을 때 딱 가운데 순위에 해당되는 값을 산출하는 역할을 합니다. 예를 들면 다음과 같습니다. IDL> data = [68, 45, 77, 89, 62] IDL> PRINT, MEDIAN(data) 68.0000 이와 같이 5개의 값들로 구성된 배열 data에 대하여 MEDIAN 함수를 적용하면, 배열 내 5개의 값들 중 크기 순서상으로 정확히 중간 순위인 3위에 해당되는 68이란 값을 결과로 얻게 됩니다. 이와 같이 배열의 원소값 갯수가 홀수일 경우에는 중간 순위가 정확히 정수값으로 떨어집니다. 즉 갯수가 7개라면 4위,..

IDL/Math 2021.06.18

GAUSS2DFIT 함수를 이용한 2차원 Gaussian 함수 근사

얼마전에 GAUSSFIT 함수를 사용하여 Gaussian 근사를 하는 방법을 소개하는 게시물을 올린 바 있는데요. 오늘은 그 2차원 버전에 해당되는 GAUSS2DFIT 함수를 사용하여 2차원 Gaussian 근사를 하는 방법을 소개해보기로 하겠습니다. 즉 2차원 데이터가 나타내는 패턴을 2차원 Gaussian 함수에 맞춰서 근사하는데 있어서 GAUSS2DFIT 함수를 사용하는 방법이 될텐데요. IDL 도움말에서 GAUSS2DFIT 함수에 관한 내용을 보면 그 근거가 되는 수식에 관하여 다음과 같이 자세히 소개되어 있습니다. 즉 2차원 타원형 Gaussian 수식이라고 볼 수 있는데요. 2차원적인 패턴을 타원의 형태로 근사하고 그 타원의 장반경, 단반경, 중심점, 기울기 등에 해당되는 인자들을 근사에 의하..

IDL/Math 2021.01.05

GAUSSFIT 함수를 이용한 Gaussian 함수 근사

오늘은 IDL의 GAUSSFIT 함수를 이용하여 Gaussian 함수 근사를 수행하는 방법에 관하여 소개해보기로 하겠습니다. Gaussian 함수는 그 형태가 마치 종의 모양(Bell Shape)을 띄며, 기초통계에서 등장하는 정규분포함수 역시 이러한 형태를 띄는 것으로 잘 알려져 있습니다. 원래 이 함수의 일반적인 수식은 다음과 같습니다. 이 수식에서는 그 형태를 결정짓는 인자들이 a, b, c 세 개입니다. 그런데 IDL의 GAUSSFIT 함수에서는 이러한 3-term Gaussian 함수에 대한 근사 뿐만 아니라, 인자들이 더 많은 케이스들(4, 5, 6-term)에 대한 근사도 가능합니다. 즉 다음과 같이 기본적으로는 Gaussian의 형태를 가지면서 베이스라인의 형태가 다양한 일반적인 케이스들까..

IDL/Math 2020.12.28

구면상의 지점 분포 데이터에 대한 격자화 및 유의사항

오늘은 글로벌 맵(Global Map) 즉 세계 전체 지도 상에서 분포하는 지점별 데이터들을 규칙 격자 데이터로 변환하는 작업에 대하여 소개하고 이와 관련된 유의사항에 관해서도 함께 언급해보고자 합니다. 사실 불규칙하게 지점별로 분포하는 데이터를 규칙 격자 데이터로 변환하는 방법에 관해서는 제가 이 블로그에서 여러 차례 관련 게시물들을 통하여 소개한 바 있습니다. 이 게시물들에서는 격자화를 위한 내삽 연산을 담당하는 GRIDDATA, KRIG2D, SPH_SCAT 등의 함수들의 사용법 및 관련 예제들이 상세히 설명되어 있습니다. 그런데 이 게시물들에서 주로 예제로 사용되었던 지점 분포 데이터들의 경우 그 지점들이 주로 한반도 및 그 주변 영역에 제한되었습니다. 아무래도 국내 사용자들 입장에서는 그런 데이..

IDL/Math 2020.12.18