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위, 9개라면 5위, 11개라면 6위가 딱 중간 순위가 됩니다.
그런데 만약 배열의 원소값 갯수가 짝수일 경우에는 어떨까요? 이럴 경우에는 중간순위가 정확하게 정수값으로 떨어지지 않습니다. 만약 갯수가 4개라면 중간 순위가 2.5가 된다고 볼 수도 있겠지만 "2.5위"라는 순위는 존재하지 않습니다. 이럴 경우에 실제로 IDL에서는 다음과 같이 처리가 됩니다.
IDL> data = [68, 45, 77, 89]
IDL> PRINT, MEDIAN(data)
77.0000
이 경우에는 중간 순위를 소수점 단위까지 따지면 2.5위가 되겠지만 이를 반올림해서 3위로 간주하고, 오름차순 순서상 3위인 77이 결과값이 된 것이라고 보면 됩니다. 즉 원소 갯수가 짝수일 경우에는 이와 같은 방식으로 처리되는 것이 MEDIAN 함수의 디폴트 설정입니다. 그런데 다음과 같이 MEDIAN 함수를 /EVEN 키워드와 함께 사용하면 결과는 달라집니다.
IDL> data = [68, 45, 77, 89]
IDL> PRINT, MEDIAN(data, /EVEN)
72.5000
여기서는 그야말로 마치 "2.5위"에 해당되는 값을 내삽하는 것처럼 즉 오름차순상으로 2위인 68과 3위인 77의 평균값인 72.5를 산출하여 결과값으로 돌려줍니다. 이와 같이 배열의 원소값 갯수가 짝수일 경우에 /EVEN 키워드를 함께 사용하면 이러한 방식으로 결과를 산출하게 됩니다. 물론 72.5라는 값은 원본 데이터 배열 내에서는 존재하지 않던 값입니다. 따라서 원본 데이터에 충실할 것이냐 아니면 내삽에 의한 계산값이어도 괜찮냐에 따라 선택적으로 판단을 하시면 됩니다. 물론 배열의 원소값 갯수가 홀수일 경우에는 /EVEN 키워드의 사용 여부와 상관없이 정확한 중간 순위에 해당되는 값이 결과값이 됩니다.
이해를 돕기 위하여 오늘 소개한 내용에 관한 도식적인 그림을 함께 첨부합니다.
'IDL > Math' 카테고리의 다른 글
Interpolation vs. Fitting (0) | 2021.08.02 |
---|---|
INTERPOL 함수를 이용한 1차원 내삽(1-d Interpolation) (0) | 2021.07.26 |
GAUSS2DFIT 함수를 이용한 2차원 Gaussian 함수 근사 (0) | 2021.01.05 |
GAUSSFIT 함수를 이용한 Gaussian 함수 근사 (0) | 2020.12.28 |
구면상의 지점 분포 데이터에 대한 격자화 및 유의사항 (0) | 2020.12.18 |