Document Sample

INTERACTIVE DATA LANGUAGE (IDL) This PPT includes some materials downloaded from Internet, please don’t circulate it out of the LAB WHAT IS IDL? Interactive Data Language (IDL) is a programming language that is a popular data analysis language among scientists. IDL is the trusted scientific programming language used across disciplines to create meaningful visualizations out of complex numerical data (ITT). • 1970 – IDL’s predecessor, Laboratory for Atmospheric and Space Physics, CO • Used by - NASA - Lockheed-Martin - Medical Imaging Fields - Remote sensing WHAT IS IDL??? A More Powerful MATLAB, also more expensive. A great tool for hyperspectral imaging! A fast tool for processing large images!! A great GREAT tool for ENVI programming!!! OVERVIEW OF IDL A high-level interpreted programming language with vector and array primitives Modern programming language Flow control Data structures Objects All operators and most functions work on scalar, vector or array data of any data type. Data visualization tool, advanced built-in graphics 2-D plots Contour plots Surface plots Shaded surfaces Gray scale/color images Volume rendering, … Multi-platform support Unix: Sun, Hewlett Packard, Silicon Graphics, IBM Linux, Microsoft Windows, Mac 4 HOW TO LEARN • Online Help • Google http://www.idlcoyote.com/ • Practice & Practice BASIC VARIABLE TYPES • Integers - 1 byte – byte data type (0..256) IDL> a=bindgen(1) - 2 bytes – integers data type (0..2562-1) IDL> b=indgen(1) & print,5/3 1 - 4 bytes – long integers (0..2564-1) IDL> c=lindgen(1) - 8 bytes – 64-bit long integers (0..2568-1) • Floating data types - 4 bytes – floats (exponent from-38 to 38) IDL>print,5./3. & y=float(3)/float(2) 1.66667 IDL> a=1.23456789 IDL> print,a,format=‘(f20.10)’ - 8 bytes – double-precision IDL> print,5d/3d 1.6666667 IDL> a=1.23456789d0 & print,a,format=‘(f20.10)’ IDL> xyouts,xloc,yloc,string(a,format=‘f(20.10)’) • Strings (Text) IDL>x=‘Hi there!!!’ ASSIGNMENT STATEMENTS A=B+1 A has the same structure as B, with a data type equal to that of the most precise operand in the expression on the right hand side. In this case it could be any type except string. If B is a vector or array then 1 is added to each element. A = 0 ; A is a 16 bit integer A = A * 0.5 ; A is now a 32 bit float B = A(*,3) ; B is equal to the 4th row of A A(*,3) = 0 ; Set all elements in 4th row of A equal to 0 Examples: image = fltarr(512, 512) ; zero filled array b = image(0:127, 0:127) ; b is 128x128 array image(*,100) = findgen(512) ; replace row 100 plot, image(*,100) ; plot row 121 ; Display the power spectrum as an image tvscl, alog(abs(fft(image, 1))) 7 NAMING VARIABLES • Assign ‘readable’ variable names that make sense • Variable names must start with a letter - NO: 6a=“gamma” OK: a6=“gamma” • Variable names may not have spaces in them - NO: A 6=5 OK: A_6=5 • Some characters are illegal or have special meanings - NO: a@=5, a.b=5 (used for structures), A+=5, A#=5 ORGANIZATIONAL STRUCTURES • Scalars IDL> x=3. • Vectors IDL> a=[0,1,2,3] & print,a[1] 1 • Arrays (see IDL help for matrices) (index from zero) intarr(), fltarr(), dblarr(), strarr().indgen() IDL> q=intarr(2,2) 0 0 0 0 IDL> m=indgen(2,2) 0 1 2 3 IDL> print,m(0,1) 2 IDL> a=findgen(100,100) IDL> print,a[1,0] 1.00000 IDL> b=a[23:25,67:69] IDL> indx=where(a gt 10.) IDL> jndx=where(a[indx] le 100.) IDL> b=a[indx[ jndx]] ARRAY OPERATIONS • Simple math operations (* by scalar, +, -); A 3-column by 2-row array: IDL> A = [ [0, 1, 2],[3, 4, 5] ,[5,6,7]] IDL>B=2*A 0 2 4 IDL>print, B 6 8 10 10 12 14 • More complex math #, Multiply an array by another IDL> C=A#B N_elements: Total number of elements in array IDL> n=n_elements(A) Total(array): computes a sum of all elements Min(array): outputs the min value; also Max Minmax(array): outputs the min then max Rebin: Resize array IDL> C=Rebin(A,6,6) Eigenvec: finds eigenvectors BASIC PROGRAMMING IF-THEN BLOCK IF (logical-statement) THEN something IF (logical-statement) THEN BEGIN Something Other thing ENDIF IF (logical-statement) THEN BEGIN Something Other thing ENDIF ELSE some-other-thing BASIC PROGRAMMING CASE CASE name OF Match_1: do-something Match_2: do-other thing ELSE: do-things not-matched ENDCASE BASIC PROGRAMMING DO-loop FOR n=0, number DO a[n] = fix(n) FOR n=0, number DO BEGIN a[n] = fix(n) B[n] = 2.0*a[n]^2 + 4.0*a[n] + 6.0 $ + 8.0*a[n]^(-2.5) ENDFOR NOTE: $ is for continuation. FILES AND INPUT/OUTPUT Write data to a file, formatted OPENW, 1, ‘original.dat’ OPENW, 2, ‘noisy.dat’ PRINTF, 1, original PRINTF, 2, noisy CLOSE, 1 CLOSE, 2 PLOT AND PROCESSING Making a New Dataset noisy = ((RANDOMU(SEED, 200) - .5) / 2) original = SIN((FINDGEN(200)/35)^2.5) Plot PLOT, noisy Plot them together PLOT, original, THICK = 3, XTITLE = "Time", YTITLE ="Amplitude“ OPLOT, original+noisy IDL EXAMPLES IDL> a = sin(findgen(100)/99. * 2 * !pi) IDL> help, a IDL> plot, a IDL> a = shift(alog(abs(fft(dist(256),1))),128,128) IDL> isurface, a 1 6

DOCUMENT INFO

Shared By:

Categories:

Tags:

Stats:

views: | 3 |

posted: | 1/31/2013 |

language: | English |

pages: | 16 |

OTHER DOCS BY hcj

How are you planning on using Docstoc?
BUSINESS
PERSONAL

By registering with docstoc.com you agree to our
privacy policy and
terms of service, and to receive content and offer notifications.

Docstoc is the premier online destination to start and grow small businesses. It hosts the best quality and widest selection of professional documents (over 20 million) and resources including expert videos, articles and productivity tools to make every small business better.

Search or Browse for any specific document or resource you need for your business. Or explore our curated resources for Starting a Business, Growing a Business or for Professional Development.

Feel free to Contact Us with any questions you might have.