Presentation is loading. Please wait.

Presentation is loading. Please wait.

IDL (Interactive Data Language). 컴퓨터 언어 : 컴퓨터와의 커뮤니케이션에 쓰이는 다양한 종류의 언어 ( 출처 : 위키백과 ) 저급 언어 컴퓨터 내부에서 바로 처리가 가능한 언어 기계어, 어셈블리어 고급 언어 사람이 알기 쉽도록 쓰여진 언어 자바,

Similar presentations


Presentation on theme: "IDL (Interactive Data Language). 컴퓨터 언어 : 컴퓨터와의 커뮤니케이션에 쓰이는 다양한 종류의 언어 ( 출처 : 위키백과 ) 저급 언어 컴퓨터 내부에서 바로 처리가 가능한 언어 기계어, 어셈블리어 고급 언어 사람이 알기 쉽도록 쓰여진 언어 자바,"— Presentation transcript:

1 IDL (Interactive Data Language)

2 컴퓨터 언어 : 컴퓨터와의 커뮤니케이션에 쓰이는 다양한 종류의 언어 ( 출처 : 위키백과 ) 저급 언어 컴퓨터 내부에서 바로 처리가 가능한 언어 기계어, 어셈블리어 고급 언어 사람이 알기 쉽도록 쓰여진 언어 자바, 베이직, C, 포트란... IDL ☜ 얘들보다 사람이 더더욱 알기 쉽게 쓰여진 언어 장점 유저친화적 ( 형변환 유연, 대소문자 구별 X 등등 ) 프로그래밍과 그래픽 작업을 동시에 ! 천문학에 특화된 다양한 함수 ! 단점 무겁다. 돈이 든다 … 프로그래밍, 데이터 연산, 이미지 처리 등등 천문 학의 다양한 분야에서 활용 중 ! 각쌤팀에서도 쓰고, 구쌤팀에서도 쓰고, 이명균선생님 팀에서도 쓰고, 임쌤 팀에 서도 쓰고, 채쌤 팀에서도 쓰고 … ( 이하 생략. 안 쓰는 팀 찾는게 더 빠름 ;;)

3 IDL 맛보기 ! 시험 6 번 문제를 풀어봅시다. Vega (R.A. : 18h 36m 56.336s, DEC: +38°47’01.29” (J2000)) –2012 년 4 월 19 일의 좌표 ? – 황도 좌표 및 은하 좌표 ? – 지방항성시 및 표준항성시 ? ※참조 : 이후 글자 색상의 의미 IDL 내장 함수 ( 도움말 ?) IDL 외부 루틴 ( 도움말.comp) 출력결과값

4 한 번 입력해보세요 ! IDL> ra=15.*ten(18,36,56.336) IDL> dec=ten(38,47,01.29) IDL> precess, ra, dec, 2000, 2012, /print Equinox (2012): 18 37 20.52 +38 47 40.1 IDL> euler, ra, dec, lambda, beta, 3 IDL> euler, ra, dec, l,b, 1 IDL> print, lambda, beta 285.48378 61.732904 IDL> print, l, b 67.487181 19.167041 IDL> ct2lst,lst,127,-9,24,19, 4, 2012 IDL> print, lst 13.340787 IDL> ct2lst,lst,0,-9,24,19, 4, 2012 IDL> print, lst 4.8741200

5 IDL 의 특징 두 가지 실행 방식 – 명령어 창을 이용하여 간단한 계산에 용이한 방법 – 프로그램을 짜서 컴파일하는 방법 프로그램의 끝은 반드시 end 가 적혀 있어야 한다. 행의 길이에 제한이 없다. ( 참고 > 포트란은 72 자까지 ) 변수 선언을 미리 해줄 필요가 없다. ( 보고 있냐 포트란 !) – 단 변수의 첫 글자가 숫자나 _ 를 제외한 특수문자를 사용할 수 없다. –% 나 ; 는 사용 불가 대소문자의 구별을 하지 않는다. 변수의 시작은 1 이 아닌 0 부터 ! ; 로 시작하는 항목은 주석으로 처리된다.

6 IDL 공부하기 IDL Basics – 누군가 들고 날랐지 않는 한, 천문과방에 돌아다니는 얇은 소책자. – 필요한 사람들은 파티를 모아 제본을 하자... http://idluser.org –IDL user Group Google 에 검색해보자. 선배들에게 물어보자.

7 기본중의 기본 ! 사칙연산자 : +,-,*,/ 거듭제곱 : ^ 줄연결 : $ 줄바꿈 : & 주석 : ; 변수확인 : help 초기화 :.res 브레이크 : control + c 오류수정완료 : control + r 출력 : print, 삼각함수들 : sin, cos, tan, sinh, asin 로그함수 : alog, alog10 지수함수 : exp 절대값 -abs, 루트 -sqrt, 최대 -max, 최소 -min, 중간값 -median, 평균 - mean 상수들 : !pi, !dpi, !radeg, !dtors

8 사칙 연산 연습하기

9 대표적인 데이터 형식

10 데이터 형식다루기 연습 Integer 형 IDL> A=3 & B=7 IDL> C=A+B & D=C*A IDL> print, C, D 10 30 Float 형 IDL> e=1.2 IDL> print, 2*e 2.40000

11 데이터 형식다루기 연습 String 형 IDL> F='astro' & G='nomy' IDL> print, F+G astronomy IDL> print, F+G+'!!!' astronomy!!! IDL> H=string(D) IDL> print, D+D 60 IDL> print, H+H 30 30 IDL> print, strtrim(H,2)+strtrim(H,2) 3030

12 형 변환 연습 및 주의사항 Float 과 integer 를 같이 계산하면 float 에 맞춘다. IDL> a=1 & b=3 & c=5.5 IDL> d=a+b IDL> help,d D INT = 4 IDL> e=b+c IDL> help, e E FLOAT = 8.50000 IDL> print, 1./2. 0.500000 IDL> print, 1./2 0.500000 IDL> print, 1/2 0

13 형 변환 연습 및 주의사항 정수형 (byte,integer) 에는 한계가 있다 ! IDL> a=32767 IDL> print, a+1 -32768 IDL> print, a+1L 32768 float 과 double 은 정확도에서 차이가 존재한다. IDL> a=2.8 IDL> b=2.8d IDL> help, a, b A FLOAT = 2.80000 B DOUBLE = 2.8000000 IDL> print, a, b 2.80000 2.8000000 IDL> print, a, b, format='(F17.15)' 2.799999952316284 2.800000000000000

14 문자열 연습 IDL> a='Seoul National University' 문자열의 길이는 IDL> print, strlen(a) 45 대소문자 변환 IDL> print, strupcase(a) SEOUL NATIONAL UNIVERSITY IDL> print, strlowcase(a) seoul national university 공백제거 IDL> b=strcompress(a) IDL> print, b Seoul National University IDL> print, strcompress(a,/remove_all) SeoulNationalUniversity 일부분 추출 IDL> print, strmid(b,1,3) eou IDL> print, strmid(b,4,3,/reverse_offset) rsi

15 어레이 (Array) 어레이란 : 순서가 들어간 집합 ! –A=[ 승연, 하라, 니콜, 규리, 지영 ] –B=[ 니콜, 지영, 하라, 승연, 규리 ] – 집합 A 와 B 는 같다. – 어레이 A 와 B 는 다르다. IDL 에서 어레이는 0 부터 시작된다 ! 기본 생성 어레이 : 모든 항목의 값이 0 인 어레이 – intarr, fltarr, dblarr 증가 생성 어레이 : 0 부터 시작해서 1 씩 증가하는 어레이 – indgen, findgen, dindgen

16 어레이 연습 IDL> a=[2,1,4,3,5] IDL> help, a A INT = Array[5] IDL> print, a[1] 1 IDL> print, a[0] 2 IDL> print, a[2:4] 4 3 5 IDL> print, a[5] Attempt to subscript A with is out of range. Execution halted at: $MAIN$ IDL> b=intarr(5) IDL> print, b 0 0 0 0 0 IDL> c=findgen(5) IDL> print, c 0.000000 1.00000 2.00000 3.00000 4.00000 IDL> d=-2.*findgen(5)+10. IDL> print, d 10.0000 8.00000 6.00000 4.00000 2.00000 IDL> e=2.^indgen(5) IDL> print, e 1.00000 2.00000 4.00000 8.00000 16.0000

17 어레이 연습 2 차원 어레이 다루기 IDL> a=findgen(3,3) IDL> b=findgen(3,3)+10 IDL> print, a 0.000000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 IDL> print, a[1,2] 7.00000 IDL> print, b[5] 15.0000 IDL> print, a/b 0.000000 0.0909091 0.166667 0.230769 0.285714 0.333333 0.375000 0.411765 0.444444 IDL> print, a*b[1:2,0:1] 0.000000 12.0000 28.0000 45.0000

18 where 어레이에서 주어진 조건을 만족하는 것의 위치를 찾기 IDL> seed=systime(1) IDL> a=randomu(seed,10) IDL> print, a 0.164808 0.984247 0.0288758 0.162134 0.238851 0.108030 0.599594 0.178283 0.527963 0.231825 IDL> b=where(a gt 0.5) IDL> print, b 1 6 8 IDL 연산자수학 조건 LT< LE≤ GT> GE≥ EQ= NE≠

19 출력 포멧 IDL> a=25 & b=12500 & c=1355.3444 IDL> print, a, b, format='(I2,I10)' 25 12500 IDL> print, b, a, format='(I2,I10)' ** 25 IDL> print, c, format='(F10.4)' 1355.3444 IDL> print, c, format='(F14.7)' 1355.3443604 IDL> print, c, format='(E14.7)' 1.3553444E+003 IDL> print, a, b, c, format='(I2,I5,F9.4)' 25125001355.3444 IDL> print, a, b, c, format='(I2,I6,F10.4)' 25 12500 1355.3444 IDL> print, a, b, c, format='(I2,3x,I5,3x,F9.4)' 25 12500 1355.3444

20 파일 쓰기 작업 디렉토리 바꾸기 – cd, ( 디렉토리 위치 ) 문법 – Openw, ( 파일번호 ), ( 파일명 ) – Printf, ( 파일번호 ), ( 쓸내용 ) – Close,( 파일번호 ) 예시 IDL> openw,lun,'test.txt',/get_lun IDL> printf,lun,1,5 IDL> printf,lun,5,22 IDL> printf,lun,10,44 IDL> printf,lun,11, 50, 111 IDL> printf,lun,17, 71 IDL> close,lun

21 파일 읽기 한 줄 씩 읽기 IDL> openr,lun1,'test.txt',/get_lun IDL> readf,lun1,line01 IDL> print, line01 1.00000 IDL> readf,lun1,line02_a, line02_b IDL> print, line02_a, line02_b 5.00000 22.0000 IDL> oneline="" IDL> readf,lun1,oneline IDL> print, oneline 10 44

22 파일 읽기 열 맞춰 읽기 –readcol, ( 파일명 ), ( 포멧 ), ( 변수 ) – 포멧 : 문자 -a, integer-i, flout-f, double-d IDL> readcol,'test.txt',f='(f,f)',x,y,/sil IDL> print, x 1.00000 5.00000 10.0000 11.0000 17.0000 IDL> print, y 5.00000 22.0000 44.0000 50.0000 71.0000

23 유용한 명령어들 변수 저장 및 불러오기 IDL> save,x,y,filename='test_xy.dat',/verbose IDL>.res IDL> restore,'test_xy.dat',/verbose IDL> print, x, y 1.00000 5.00000 10.0000 11.0000 17.0000 5.00000 22.0000 44.0000 50.0000 71.0000 파일 찾기 IDL> file=file_search('*.txt') IDL> print, file test.txt

24 유용한 명령어들 어레이의 개수 IDL> print, n_elements(x) 5 나머지 구하기 IDL> print, 17 mod 7 3 1 차 함수 피팅 IDL> aa=linfit(x,y) IDL> print, aa 1.59140 4.18280

25 유용한 명령어들 60 진법, 10 진법 바꾸기 IDL> print, ten(10,15,55) 10.265278 IDL> print, sixty(15.5333) 15.0000 31.0000 59.8814 줄리안 데이 구하기 IDL> result=julday(4,24,2012,12,30,50) IDL> print, result,format='(F17.8)' 2456042.02141204 별 사이 각거리 구하기 IDL> gcirc,1, 18.5, 30, 18.7, 33, dis IDL> print, dis/3600. 3.9420070

26 프로그래밍 저장 후, 컴파일 후 실행 가능 – 반복 작업이나, 복잡한 구문을 짤 때 사용한다. – 컴파일 시 동그라미 모양의 에러는 문법적인 에러 - 변수 입력이 안되었거나, 괄호가 빠졌거나, 쉼표대신 마침표 찍었다거나 등등 - 가 있다는 것을 의미한다. 확인 후 수정하자. – 컴파일 시 화살표 모양의 에러가 발생하면 수정 후 ctrl+r 을 눌러 준다. 반드시 end 로 끝내야 한다.

27 For 구문 문법 for ( 변수 )=( 시작값 ),( 끝값 ),( 변화값 ) ( 내용 ) endfor 변수 값이 시작 값에서 끝값까지 변하는 동안 반복 작업을 수행. 변화값을 입력하지 않으면 기본값 1 로 수행.

28 For 구문 연습 피보나치 수열을 만들어보자. a1=1 & a2=1 a=[a1,a2] for i=0,10 do begin a3=a1+a2 a=[a,a3] a1=a2 a2=a3 endfor print, a end 1 1 2 3 5 8 13 21 34 55 89 144 233

29 if, else 구문 조건이 맞으면 실행 문법 – 한줄로 사용할 때 If ( 조건 ) then ( 명령 ) If ( 조건 ) then ( 명령 1) else ( 명령 2) – 블록으로 사용할 때 If ( 조건 ) then begin ( 명령 ) endif – 블록으로 여러 번 사용할 때 If ( 조건 1) then begin ( 명령 1) Endif else if ( 조건 2) then begin ( 명령 2) Endif else begin ( 명령 3) endelse

30 if, else 구문 연습 아무 의미 없는 모르스 부호 만들기 seed=systime(1) nnum=9 a=randomu(seed,nnum) ms=strarr(nnum) for i=0,nnum-1 do begin if a[i] lt 0.5 then ms[i]='.' else ms[i]='_' endfor print, ms end _ _. _.. _ _ _

31 while 구문 해당 조건을 만족하면 계속 수행 – 비추천 : 자칫 잘못하면 무한 루프에 빠지게 된다. 문법 – 한줄 사용시 While ( 조건 ) do ( 명령 ) – 블록 사용시 While ( 조건 ) do begin ( 명령 ) endwhile

32 while 구문 연습 가상 2012 년 한국시리즈, 엘꼴라시코 시뮬레이션 seed1=systime(1) seed2=systime(1)+500 twins=fix(abs(2*randomn(seed1,20)+10)) giants=fix(abs(2*randomn(seed2,20)+10)) game=1 tw=0 & dr=0 & gw=0 while (max([tw,gw]) lt 4) do begin if twins[game] gt giants[game] then begin tw=tw+1 endif else if twins[game] lt giants[game] then begin gw=gw+1 endif else dr=dr+1 print, 'GAME #'+strtrim(game,2) print, 'LG ('+strtrim(tw,2)+'win) '+strtrim(twins[game],2)+':'+strtrim(giants[game],2)+' LOTTE('+strtrim(gw,2)+'win)‘ print, ' ' game=game+1 endwhile if (tw gt gw) then print, '2012 KOREA CHAMPION : LG TWINS' else print, '2012 KOREA CHAMPION : LOTTE GIANTS' end

33 while 구문 연습 GAME #1 LG (0win) 10:10 LOTTE(0win) GAME #2 LG (0win) 8:10 LOTTE(1win) GAME #3 LG (0win) 7:9 LOTTE(2win) GAME #4 LG (0win) 11:11 LOTTE(2win) GAME #5 LG (1win) 13:12 LOTTE(2win) GAME #6 LG (1win) 4:11 LOTTE(3win) GAME #7 LG (1win) 9:9 LOTTE(3win) GAME #8 LG (2win) 9:7 LOTTE(3win) GAME #9 LG (2win) 12:12 LOTTE(3win) GAME #10 LG (3win) 14:12 LOTTE(3win) GAME #11 LG (3win) 10:12 LOTTE(4win) 2012 KOREA CHAMPION : LOTTE GIANTS

34 그래프 그리기 그리기에 앞서 다음을 입력하자. Device, decomposed=0 ; True color vs DirectColor visuals Loadct, 39, /sil ; 칼라테이블을 읽는다. 39 번은 흑백 + 레인보우, 13 은 흑백. /sil 은 명령창에 출력하지 말고 조용히 불러들이라는 뜻. ( cf. xpalette (SeLab 자료실에 제공하는 ) cindex) !p. background=255 & !p. color=0 ; !p. 는 plot 에 대한 명령어. 이 후 기본값으로 배경은 255 번 색, 칼라는 0 번색으로 지정. 그래프 명령어들 – Plot: 가장 기본적인 명령어 – Oplot: 기존 그래프에 덮어씌워서 그린다. – Plots: oplots 와 비슷. Array 가 아닌 하나의 점도 그릴 수 있다. – Ploterror: 십자모양의 에러바를 그려준다. – Oploterror: 에러바 그래프를 기존 그래프에 덮어씌운다. – plothist: 히스토그램을 그린다.

35 plot 가장 기본적인 그래프 그리는 명령어 문법 –plot, (x), (y), ( 기타 옵션 ) 예제 IDL> x=findgen(100)/10. IDL> y=sqrt(x) IDL> plot, x, y

36 plot 예제 그래프의 색깔을 바꿔보자. IDL> plot, x, y, color=225 선의 두께를 바꿔 그려보자. IDL> plot, x, y, thick=3 선의 모양을 바꿔 그려보자. IDL> plot, x, y, linestyle=3

37 plot 예제 점으로 그려보자. IDL> plot, x,y, psym=4, symsize=2 점 모양을 원, 혹은 별로 만들기 IDL> vsym,22,thick=2 IDL> plot,x,y,psym=8 IDL> vsym,5,/star IDL> plot,x,y,psym=8,symsize=2 점과 선을 함께 그리기 IDL> plot,x,y,psym=-8

38 plot 예제 축의 범위를 지정해보자. IDL> plot, x, y, thick=2, xr=[0,3.5],yr=[0,3] IDL> plot, x, y, thick=2, xr=[0,3.5], yr=[3,0] IDL> plot, x, y, thick=2, xr=[0,3.5],yr=[0,3],/xst,/yst IDL> plot, x, y, thick=2, xr=[0,3.5],yr=[0,3],xstyle=9, ystyle=6 – 라벨 1: 정확히 데이터 범위만큼 축을 지정 (=/xst) 2: 축의 범위에 약간의 여유를 둠 4: 축을 그리지 않음 8: 축을 한 쪽만 그림 16: x,y 축의 교점이 0 이 되지 않도록 함 (ystyle 에 해당 )

39 plot 예제 축에 라벨을 붙여보자. IDL> plot, x, y, thick=2,xtit='x',ytit='sqrt(x)‘ 라벨의 크기와 두께를 바꿔보자. IDL> plot, x, y, thick=2,xtit='x',ytit='sqrt(x)', charsize=1.5, charthick=2 축의 두께를 바꿔보자 IDL> plot, x, y, thick=2,xtit='x',ytit='sqrt(x)', charsize=1.5, charthick=2, xthick=2, ythick=2

40 plot 예제 눈금 스타일 IDL> !p. charsize=1.5 & !p.charthick=2 & !p.thick=2 & !x.thick=2 & !y.thick=2 IDL> plot, x, y, ticklen=1 IDL> plot, x, y, yticklen=1, ygridstyle=2 IDL> plot, x, y, xticks=2, yminor=5

41 plot 예제 로그 스케일 그리기 IDL> x=findgen(10000)/100. IDL> y=2^.(x) IDL> plot, x, y IDL> plot, x, y, /ylog 극좌표계 그리기 IDL> r=findgen(360) IDL> theta=findgen(360)*!dtor IDL> plot, r, theta, /polar,/isotropic

42 oplot 기존 그려진 그래프 위에 추가로 그래프를 그린다. – plot 의 많은 옵션은 사용 불가 예제 IDL> x=findgen(360) IDL> y=x/360. IDL> z=sin(x*!dtor) IDL> plot, x, y,/xst, yr=[-1,1] IDL> oplot, x, z, color=75

43 plots oplot 과 마찬가지로 기존에 그려진 그래프 위에 그래프를 추가로 그린다. 어레이 뿐만 아니라, 하나의 점도 그릴 수 있다. IDL> wdelete IDL> plot, x, y, /xst, yr=[-1,1],/nodata IDL> plots, x, y, color=75 IDL> plots, x, z, color=125 IDL> plots, 100, -0.5, psym=4, symsize=4,color=225

44 여러 그래프 그리기 그래프 창을 복수개 띄우는 방법 IDL> window,0 IDL> plot, x, y IDL> window,1, xs=1000,ys=800 IDL> plot, x, z 한 창에 두 개 이상의 그래프 그리기 IDL> wdelete IDL> !p.multi=[0,1,2] IDL> window,0, xs=600, ys=1000 IDL> plot, x, y IDL> plot, x, z

45 에러바 그리기 문법 – ploterror, (x), (y), (x 에러 ),(y 에러 ) – oploterror, (x), (y), (x 에러 ), (y 에러 ) 예제 IDL> seed1=systime(1) IDL> seed2=systime(1)+500 IDL> seed3=systime(1)+5000 IDL> x=findgen(23)+1 IDL> y=x IDL> z=0.5*x IDL> xe=randomu(seed1,23)-0.5 IDL> ye=randomu(seed2,23)-0.5 IDL> ze=2*randomu(seed3,23)-1. IDL> ploterror, x,y,xe, ye, psym=4 IDL> oploterror,x,z,xe,ze,psym=4,/nohat,color=75, errcolor=75

46 xyouts, legend xyouts – 그래픽 창에서 텍스트를 출력한다. – 문법 : xyouts, (x 좌표 ),(y 좌표 ),( 텍스트 ),( 좌표계 ) /data : data 값 /normal : 창의 상대 크기 (0~1) /device : 창의 픽셀 값 legend – 범례를 만든다. – 문법 : legend, ( 항목 ), ( 옵션 ) 예제 IDL> xyouts,15,5,'Astronomy',color=225 IDL> legend,['Y','Z'],color=[0,75],psym=[4,4],/left,/top

47 히스토그램 그리기 plothist, 변수, ( 만들어진 x 어레이 ), ( 만들어진 y 어레이 ), bin=( 폭 ) 예제 IDL> seed=systime(1) IDL> aa=randomn(seed, 50000) IDL> plothist, aa, xx, yy, bin=0.25

48 이미지 불러오기 read_BMP, read_PNG, read_JPEG 등등등 tv 와 tvscl –tv : 이미지를 디스플레이 한다. –tvscl : 0~255 사이로 스케일을 맞춰준다. 예제 IDL> read_jpeg,'sample.jpg',aa IDL> window,0,xs=600,ys=450 IDL> tv,aa,true=1

49 이미지 다루기 예제 흑백 이미지를 불러보자 IDL> read_jpeg,'sample.jpg',aa,/grayscale IDL> window,0,xs=600,ys=450 IDL> tv,aa 이미지 크기를 바꿔보자 – rebin : 정수배 비율로 변환. 속도가 빠르다 – congrid : 자유로운 비율로 변환. 속도가 느리다. IDL> aa1=rebin(aa,300,225) IDL> aa2=congrid(aa,400,300)

50 이미지 다루기 예제 문턱값 – 조건을 만족하면 1( 밝음 ), 만족하지 못하면 0( 어두움 ) 으로 분류 – tv 로 열면 잘 보이지 않으므로, tvscl 로 스케일을 맞춘다. IDL> tvscl, aa gt 100 최대 / 최소 지정 –> 나 < 사용 –> 의 경우 해당 숫자를 넘는 값은 그대로 유지하고, 그 이하 값은 해당 숫자로 대체. – bytscl : 어떤 배열을 0~255 의 bite 값으로 스케일링 IDL> tv, aa>100 IDL> erase IDL> tvscl, aa>100<150 IDL> tv, bytscl(aa, min=90, max=200)

51 이미지 다루기 예제 회전 –rotate : 90 도 단위로 회전 ( 결과이미지 )=rotate( 원본이미지, 방향번호 ) –rot : 자유각도로 회전 가능 ( 결과이미지 )=rot( 원본이미지, 회전각, 중심 x 좌표, 중심 y 좌표 ) 방향번호변환법 x1y1 0 돌리지 않는다. x0y0 1 반시계 90 도 -y0x0 2 반시계 180 도 -x0-y0 3 반시계 270 도 y0-x0 4 x,y 변환 후 돌리지 않는다. y0x0 5 x,y 변환 후 반시계 90 도 -x0y0 6 x,y 변환 후 반시계 180 도 -y0-x0 7 x,y 변환 후 반시계 270 도 x0-y0

52 이미지 저장하기 write_BMP, write_jpeg, write_png 등등 흑백 이미지 저장하기 예제 IDL> write_png, 'test.png', aa[101:500, 51:400] 칼라 이미지 저장하기 예제 IDL> read_jpeg,'sample.jpg',aa IDL> write_bmp,'test.bmp',aa[*,101:500,51:400], /rgb

53 그래프 저장하기 이미지 포멧 (jpeg) 로 저장하기 IDL> x=findgen(11) IDL> device, decomposed=0 IDL> loadct, 39,/sil IDL> !p.color=0 & !p.background=255 IDL> !p.thick=2 & !x.thick=2 & !y.thick=2 IDL> !p.charsize=1.5 & !p.charthick=2 IDL> plot, x, 3*x IDL> oplot, x, 0.6*x, color=225 IDL> write_jpeg,'test.jpeg',tvrd(true=1),true=1

54 그래프 저장하기 ps(eps) 포멧으로 저장하기 IDL> set_plot,'ps' IDL> device, filename='test.eps',xs=28, ys=20, xoff=6, yoff=10, /encap, /color, bits=8 IDL> plot, x, 3*x IDL> oplot, x, 0.6*x, color=225 IDL> device, /close set_plot,’ps’ 를 해제하려면 set_plot,’win’

55 readfits 문법 –( 변수 )= readfits(‘( 파일명 )’,( 헤더변수 )) 예제 –fits 파일 로드 IDL> uu=readfits('M50u.fits',hu) –fits 파일 보기 IDL> tvscl, uu – 헤더보기 IDL> print, hu

56 writefits 문법 – writefits,( 파일명 ),( 이미지변수 ),( 헤더 ) 예제 IDL> writefits,'test,fits',0.5*uu,hu

57 칼라 이미지 합성하기 IDL> uu=readfits('M50u.fits',hu) IDL> bb=readfits('M50b.fits',hb) IDL> vv=readfits('M50v.fits',hv) IDL> sky, uu, skyu, sigu Number of points used to find sky = 9591 Approximate sky value for this frame = -0.188276 Standard deviation of sky brightness = 4.90945 IDL> sky, bb, skyb, sigb Number of points used to find sky = 9376 Approximate sky value for this frame = 337.320 Standard deviation of sky brightness = 12.3542 IDL> sky, vv, skyv, sigv Number of points used to find sky = 9358 Approximate sky value for this frame = 961.284 Standard deviation of sky brightness = 17.5853

58 칼라이미지 합성하기 IDL> r=vv/skyv & g=bb/skyb & b=uu/abs(skyu) IDL> s=size(b) IDL> result=fltarr(3,s[1],s[2]) IDL> result[0,*,*]=r IDL> result[1,*,*]=g IDL> result[2,*,*]=b IDL> tv, result, true=1 교훈 : 관측을 잘하자 …

59 미니 과제 성단팀 –cluster.txt 파일 가상의 성단을 관측한 파일 별의 x 좌표, y 좌표, b 등급, b 등급에러, v 등급, v 등급에러 –isochrone.txt 가상의 등연령 곡선 B 등급, B-V 등급 –B-V, V 의 색등급도를 에러바를 포함해서 그려보아라. 그리고 X 축 : B-V Y 축 : V – 변곡점을 찾을 수 있는가 ? –Tip : Y 축은 밝은 별이 위, 어두운 별이 아래로 위치하도록 해야한 다. 즉 등급을 반전 !

60 미니 과제 초신성 및 변광성팀 –variable.txt 가상의 변광성을 35 일동안 매 자정에 관측한 결과 파일 변광성등급, 변광성에러, 비교성 1 의등급, 비교성 1 의 등급에러, 비교성 2 의 등 급, 비교성 2 의 등급에러, 비교성 3 의 등급, 비교성 3 의 등급에러 – 주어진 변광성의 변광 곡선을 에러바를 포함하여 그려보아라 X 축 : 관측 일차 Y 축 : 등급 변화 – 비교성 세 개 중, 비교성으로 사용하기 부적합한 별을 찾으라. –Tip : 역시 등급으로 그리면 Y 축은 반전. 그리고 우선 비교성들 끼 리 등급 변화를 비교하면 부적합한 비교성을 쉽게 찾을 수 있다.

61 미니과제

62 제출일 : 5 월 3 일 – 제출방법 : khpark@astro.snu.ac.kr 로 이메일로 제출khpark@astro.snu.ac.kr – 보낼 것 자신이 짠 코드파일 그래프 ( 반드시 jpg, bmp, png 등 이미지 파일 형식으로 !) 이메일 내용에 질문에 대한 답 및 간단한 소감, 궁금한 것을 첨부할 것.


Download ppt "IDL (Interactive Data Language). 컴퓨터 언어 : 컴퓨터와의 커뮤니케이션에 쓰이는 다양한 종류의 언어 ( 출처 : 위키백과 ) 저급 언어 컴퓨터 내부에서 바로 처리가 가능한 언어 기계어, 어셈블리어 고급 언어 사람이 알기 쉽도록 쓰여진 언어 자바,"

Similar presentations


Ads by Google