Presentation is loading. Please wait.

Presentation is loading. Please wait.

Interactive Data Language

Similar presentations


Presentation on theme: "Interactive Data Language"— Presentation transcript:

1 Interactive Data Language
IDL Programming 세종대학교

2 IDL Programming (+연습) IDL 그래픽 시스템 개요 IDL New Graphic System
차례 IDL Programming (+연습) IDL 그래픽 시스템 개요 IDL New Graphic System

3 Interactive Data Language
IDL Programming (+연습)

4 프로시저와 펑션 프로시저(Procedure) IDL> print, 30*!pi IDL> help, !values
펑션(Function) - 함수 IDL> a=sin(30*!dtor) IDL> print, factorial(4) ;4! 같은 이름을 가지는 함수와 프로시저 IDL> plot, sin(indgen(361)*!dtor) IDL> p=plot(sin(indgen(361)*!dtor)

5 IDL 문법 요약 문자열을 제외하고는 대소문자 구분 없음 키워드가 발달한 언어 키워드 사용에 관하여
IDL> print, 5.5, format=‘(F7.5)’ IDL> plot, x, y, title=‘Test’, xtitle=‘time’, color=255,…. IDL> result=mean(x, /nan) 키워드 사용에 관하여 키워드는 순서 무관. 키워드는 다른 키워드와 구별되는 길이까지 줄여 쓸 수 있음 device, decom= & print, 5.5, form=‘(F7.5)’ /키워드는 키워드=1 과 문법적으로 완전히 동일함 result=mean(x, NAN=1) & result=mean(x, /NAN)

6 How to make Procedure pro twotimes, value value = 2.0 * value
print, 'It was multiplied by 2.0!!!‘ print, value end Save it as twotimes.pro Place it anywhere IDL> twotimes, 3

7 How to make Function function hap, x, y sum=x+y return, sum end
IDL> print, hap(3, 5) Compiled module: HAP. 8 IDL> .edit hap 또는 Open hap.pro

8 How to make Batch(or Script)
n=72 z=dist(n) shade_surf, z surface, z, /noerase 위 내용을 한줄 씩 입력해도 됩니다. n을 다른 값으로 변경 적용하려면? 다 다시 입력해야 할까요? 연속되는 명령문을 file로 저장합니다(예, myscript.pro) “ 은 파일 이름이 내포하고 있는 내용으로 순간 대체됩니다. 스크립트 실행으로도 사용되지만 Include 문으로도 활용될 수 있습니다. 스크립트 실행은 컴파일 과정을 거치지 않습니다(한줄씩 해석해서 한줄씩 처리합니다)

9 If ~ then ~ else ~ pro if_then_else, x, y, z if (x lt 0) then x = 0
if (y le 0) then print, -y else print, y if (z eq 0) then begin print, x help, y endif end IDL> if_then_else, -5, -6, 3 Compiled module: IF_THEN_ELSE. 6 IDL> if_then_else, 10, 3, 0 3 10 Y INT = < : lt , > : gt , <= : le , >= : ge , != : ne , == : eq

10 Case Statements pro case_statments, piechoice case piechoice of
0: begin pie = 'apple' topping = 'ice cream' end 1: pie = 'pumpkin' else: pie = 'cherry' endcase print, pie IDL> case_statments, 0 Compiled module: CASE_STATMENTS. apple IDL> case_statments, 1 pumpkin IDL> case_statments, -100 cherry

11 FOR Loops pro for_loops for j = 0, 9 do print, j
for j = 0, 20, 2 do begin print, j endfor end IDL> for_loops

12 FOREACH Loop arr=[0, 9, 3, 7, 2, 5] foreach number, arr do print, number PRO testForeach list = LIST(77.97, 'Galactic', [2, 7, 1, 8, 2]) FOREACH element, list DO BEGIN PRINT, 'Element = ', element ENDFOREACH END LIST 데이터형은 이번 학기 범위를 넘어섭니다. 참고만 하세요.

13 While Loops pro while_loops, previous, current
while (current lt 100) do begin next = current + previous previous = current current = next endwhile print, current end IDL> while_loops, 20, 30 130 current(10) 가 100보다 작다면 실행 next(50) = current(30) + previous(20) previous(30) = current(30) current(50) = next(50) current(50) 가 100보다 작다면 실행 next(80) = current(50)+previous(30) previous(50) = current(50) current(80) = next(80) current(80) 가 100보다 작다면 실행 next(130) = current(80) + previous(50) previous(80) = current(80) current(130) = next(130) current(130) 가 100보다 작다면 실행(탈출)

14 Repeat Loops pro repeat_until, n repeat begin n = n + 2
endrep until (n gt 20) print, n end A = 1 B = 10 REPEAT A = A * 2 UNTIL A GT B print, a IDL> repeat_until, 10 Compiled module: REPEAT_UNTIL. 22

15 Goto pro goto_statements print, 'Hey!' goto, finish
print, "What's up?” finish: print, 'Nothing.' end IDL> goto_statements Compiled module: GOTO_STATEMENTS. Hey! Nothing. GOTO 문은 Block이 명확히 구분되지 않는 경향이 있어 가능한 사용하지 않는 것이 좋음

16 하나의 파일에 여러 루틴 pro myplot, x, y, MYTITLE=plot_title print, n_params()
case n_params() of 1 : plot, x, title=plot_title 2 : plot, x, y, title=plot_title else : print, 'error' endcase end function multiply_value, x, y return, x*y pro general degree=findgen(360) sin_value=sin(degree*!dtor) curve=multiply_value(sin_value, 3) myplot, degree, curve, mytitle=‘OK’ 어떤 것이 Main Routine 인가요? IDL> print, multiply(10, 20) Variable is undefined: MULTIPLY. Execution halted at: $MAIN$ IDL> general Compiled module: GENERAL. 2 IDL> print, multiply_value(10, 20) 200

17 Interactive Data Language
IDL 그래픽 시스템 개요

18 IDL Graphics System 개요 IDL Inteligent Tools(iTools) (Since 2003. v6.0)
Object Graphics 를 사용자에게 쉬운 인터페이스로 제공 Interactive (Point & Click 위주) New Graphics (Since v8.0) Object Graphics 를 Direct Graphics와 유사한 문법으로 사용 Object Graphics (Since v5.0) 객체 지향 프로그래밍 기법 활용 모든 그래픽 요소가 객체(Object)인 데서 이름 유래 Direct Graphics (Since v1.0) Graphic 출력 결과를 “바로” 장치(화면/프린터/PostScript 등)으로 보내는 원리에서 이름 유래 현재 설정 장치 개념이 중료함

19 Direct Graphic System Graphics 장치로 결과 전송(WIN, X, MAC, PS…)
Set_plot Graphics 장치와 관련된 설정 필요 Device, decomposed…, xsize…, xoffset…, bits_per_pixels… 생성된 그림이 장치로 전송되고 난 이후에, 해당 그림을 재사용, 변경 등이 불가능(Direct!) 다시 새로 그려야 함 Window, Wset, Wshow, Wdelete TVLCT, LoadCT, XLoadCT, XPalette Plot, oPlot, PlotS Contour, Surface, Shade_Surf, Show3 Tv, TvSCL, SLIDE_IMAGE, TVRD, Xinteranimate Slicer3, shade_volume, project_vol, Voxel_Proj, Polyshade Map_set, Map_grid, Map_continents, Map_image

20 Object Graphics System
장치 불문 가시화 대상을 조립한 뒤 장치를 선정하고 전송하면 장치에 맞는 가시화를 구현함. 재사용 구성한 가시화 대상은 재사용 및 변형 가능 모두 3차원 그래픽 2차원 가시화도 내부적으로는 3차원 그래픽을 Z축 방향으로 투영(XY Plane)한 것 3차원 투영 계산이 항상 동반됨 (2차원 가시화에서 Direct에 비해 속도가 느림) 프로그래머 인터페이스 코드가 길어짐. 인터랙티브 모드로 사용하기 불편한 면이 있음 구성된 그래픽 객체가 메모리 상에 존재(Object)하므로 프로그래머가 메모리 관리에 신경을 써 주어야 함. IDLgrWindow, IDLgrScene, IDLgrView, IDLgrViewGroup, IDLgrModel IDLgrPalette, IDLgrColorbar IDLgrPlot / IDLgrContour, IDLgrSurface / IDLgrImage / IDLgrVolume IDLgrPolyline, IDLgrPolygon IDLgrAxis, IDLgrFont, IDLgrLight, IDLgrROI, IDLgrBuffer, IDLgrClipboard….

21 그래픽 체계 비교 Graphical System 장점 단점 Direct Graphics 빠른 처리 사용자 환경 취약
대용량 데이터에 효율적 VRAM 리소스 의존 전통적인 IDL그래픽 그래픽 수정을 위해 코드 재실행 Object Graphics 3차원 렌더링 기반 기본 사용자 환경 제공 객체 지향 모델 CPU 부담 증가 프로그래머에게 편리 긴 코딩 필요 iTools 사용자 환경 편리 너무 많은 기능이 눈에 보임 기본 도구 제공(iPlot 등) CPU 부담 큼 확장 및 수정 가능(어려움) 대용량 데이터 처리시 느림 New Graphics 미려한 결과물 CPU 부담

22 예제. IDL Direct vs Object Graphics
script_dirvsobj.pro 를 열어 한줄씩 실행해 봅시다. 참고) DXF(Autocad 포맷)을 읽기 위해 32bit 모드로 IDL을 실행해야 합니다. iPlot, Plot_3dbox, plot3d() 등을 이용하여 3차원 꼭지점 자료를 어떻게 표출할 수 있는지도 확인합니다.

23 Interactive Data Language
IDL New Graphics

24 개요 함수형태로 제공되는 IDL의 Graphic 도구들 IDL 8.0 버전부터 제공됨
Object Graphics의 Quality를 쉽게 사용할 수 있도록 기능은 iTools보다 단순하게 문법은 가능한 Direct Graphics와 유사하게

25 기본 사용법 data = sin(2.0*findgen(200)*!pi/25.0)*$ exp(-0.02*findgen(200))
p=plot(data) 좌변 변수가 그래픽의 모든 정보를 가지고 있습니다. p.linestyle=1 p.color=‘red’ p.thick=3 키워드를 이용하여 처음 플롯에서 원하는 설정을 할 수 있습니다. p=plot(data, linestyle=1, color='red', $ thick=3)

26 실전 Tip 도움말에 다양한 예제들이 Gallery 형식으로 제공됩니다. 필요한 내용을 선택하여 코드를 확인하세요.
좌변 변수를 이용하여 많은 일을 할 수 있습니다. 어떤 일을 할 수 있는지 확인할 땐, print, 변수이름 PLOT, SURFACE, IMAGE, CONTOUR, PLOT3D와 같이 Direct Graphics에도 대응 명령이 존재하는 루틴을 먼저 익히면 배우기 쉽습니다. 색, 심볼 기호, 선 종류 등을 설정하는 새로운 형식의 포맷 코드에 익숙해 지면 좋습니다. TEXT()는 Direct graphics의 XYOUTS에 해당합니다. Greek 문자나 수식을 입력하는 방법을 익혀 놓으면 좋습니다.

27 실습 한장 강의 : IDL Graphics 기본 사용법 TEXT 함수 도움말 ERRORPLOT 도움말 SURFACE 도움말
CONTOUR 도움말 첨부 예제 파일 감상 (Direct Graphic과 비교)


Download ppt "Interactive Data Language"

Similar presentations


Ads by Google