Presentation is loading. Please wait.

Presentation is loading. Please wait.

Rolando V. RaqueñoMonday, June 22, 2015 1 Basic IDL Commands SIMG 726.

Similar presentations


Presentation on theme: "Rolando V. RaqueñoMonday, June 22, 2015 1 Basic IDL Commands SIMG 726."— Presentation transcript:

1 Rolando V. RaqueñoMonday, June 22, 2015 1 Basic IDL Commands SIMG 726

2 Rolando V. RaqueñoMonday, June 22, 2015 2 Objective Quick Tour of IDL Writing IDL Programs

3 Rolando V. RaqueñoMonday, June 22, 2015 3 Before we start % source ~rvrpci/.simg726.rc % typescript % set history=100 AT THE END OF THE UNIX SESSION, DON’T FORGET TO TYPE % ^D

4 Rolando V. RaqueñoMonday, June 22, 2015 4 Before we END AT THE END OF THE UNIX SESSION, DON’T FORGET TO TYPE % ^D You now have file called typescript which contains a log of your UNIX session

5 Rolando V. RaqueñoMonday, June 22, 2015 5 Starting IDL in UNIX To start command line interface IDL environment % idl To start graphical interface IDL environment % idlde

6 Rolando V. RaqueñoMonday, June 22, 2015 6 IDL Help MOST IMPORTANT IDL COMMAND OF ALL IDL> ?

7 Rolando V. RaqueñoMonday, June 22, 2015 7 IDL Help Window

8 Rolando V. RaqueñoMonday, June 22, 2015 8 Other IDL Help Facilities IDL> doc_library,’moment’ Allows specially formatted code comments to be viewed without having to view the source code

9 Rolando V. RaqueñoMonday, June 22, 2015 9 General IDL Information N.B. Platform specific limitation –UNIX File name conflict between lower and upper case characters –e.g. addnum.pro vs. AddNum.pro Recommend use of strictly lowercase file names

10 Rolando V. RaqueñoMonday, June 22, 2015 10 IDL Character Set IDL is not case sensitive Commands and arguments are delimited by comas. –e.g. IDL> print, a Comments are started by a semicolon (;) –e.g. IDL> ; This is a comment Command options are set using a backslash (/) –e.g. IDL> tv, a, /order

11 Rolando V. RaqueñoMonday, June 22, 2015 11 Other IDL Characters System variables are started with an exclamation point (!) e.g. IDL> print, !PI e.g. IDL> y = sin( x*!DTOR ) Command line continuation with $ e.g. IDL> print, 180 / $ !PI

12 Rolando V. RaqueñoMonday, June 22, 2015 12 Other IDL Characters Multiple IDL commands can be separated by the & symbol –e.g. IDL> a=0.0 & b=1.0 UNIX Command execution –e.g. IDL> $ls -la

13 Rolando V. RaqueñoMonday, June 22, 2015 13 Journal Facility of IDL The journal command allows you to record all IDL activity during a particular session IDL> journal, ‘sequence.pro’ IDL> print, 3*5 IDL> journal

14 Rolando V. RaqueñoMonday, June 22, 2015 14 sequence.pro ; IDL Version 3.6.1a (MacOS Macintosh) ; Journal File for Rolando Raqueño@green ; Working directory: Raqueño's Hard Drive:Applications:ENVI: ; Date: Tue Sep 17 00:56:18 1996 print,3*5 ; 15

15 Rolando V. RaqueñoMonday, June 22, 2015 15 Sample Commands Some sample command IDL> print,3*5 IDL> print,SysTime() IDL> num = 5*12 IDL> help,num NUM INT = 60 IDL> print,num 60

16 Rolando V. RaqueñoMonday, June 22, 2015 16 Creating an Array Some sample command IDL> num = fltarr(40) IDL> help,num NUM FLOAT = Array(40) IDL> print,num 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000

17 Rolando V. RaqueñoMonday, June 22, 2015 17 Creating an “Indexed Array” Some sample command IDL> for i=0,39 do num(i)=i IDL> help,num NUM FLOAT = Array(40) IDL> print,num 0.00000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000 10.0000 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 17.0000 18.0000 19.0000 20.0000 21.0000 22.0000 23.0000 24.0000 25.0000 26.0000 27.0000 28.0000 29.0000 30.0000 31.0000 32.0000 33.0000 34.0000 35.0000 36.0000 37.0000 38.0000 39.0000

18 Rolando V. RaqueñoMonday, June 22, 2015 18 Shortcut Creating Indexed Array Some sample command IDL> num = findgen(40) IDL> help,num NUM FLOAT = Array(40) IDL> print,num 0.00000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000 10.0000 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 17.0000 18.0000 19.0000 20.0000 21.0000 22.0000 23.0000 24.0000 25.0000 26.0000 27.0000 28.0000 29.0000 30.0000 31.0000 32.0000 33.0000 34.0000 35.0000 36.0000 37.0000 38.0000 39.0000

19 Rolando V. RaqueñoMonday, June 22, 2015 19 Indexed Array Example Some sample command IDL> num = findgen(40)*10 IDL> print,num 0.00000 10.0000 20.0000 30.0000 40.0000 50.0000 60.0000 70.0000 80.0000 90.0000 100.000 110.000 120.000 130.000 140.000 150.000 160.000 170.000 180.000 190.000 200.000 210.000 220.000 230.000 240.000 250.000 260.000 270.000 280.000 290.000 300.000 310.000 320.000 330.000 340.000 350.000 360.000 370.000 380.000 390.000

20 Rolando V. RaqueñoMonday, June 22, 2015 20 Indexed Array Example Some sample command IDL> num = findgen(40)*10-195 IDL> print,num -195.000 -185.000 -175.000 -165.000 -155.000 -145.000 -135.000 -125.000 -115.000 -105.000 -95.0000 -85.0000 -75.0000 -65.0000 -55.0000 -45.0000 -35.0000 -25.0000 -15.0000 -5.00000 5.00000 15.0000 25.0000 35.0000 45.0000 55.0000 65.0000 75.0000 85.0000 95.0000 105.000 115.000 125.000 135.000 145.000 155.000 165.000 175.000 185.000 195.000 In general you will be using a linear form y=m*x+b

21 Rolando V. RaqueñoMonday, June 22, 2015 21 Extracting Array Subset Some sample command IDL> num1 = num(0:36) IDL> print,num1 -195.000 -185.000 -175.000 -165.000 -155.000 -145.000 -135.000 -125.000 -115.000 -105.000 -95.0000 -85.0000 -75.0000 -65.0000 -55.0000 -45.0000 -35.0000 -25.0000 -15.0000 -5.00000 5.00000 15.0000 25.0000 35.0000 45.0000 55.0000 65.0000 75.0000 85.0000 95.0000 105.000 115.000 125.000 135.000 145.000 155.000 165.000 IDL> help,num1 NUM1 FLOAT = Array(37)

22 Rolando V. RaqueñoMonday, June 22, 2015 22 Scalar Operation on Arrays Some sample commands IDL> num = findgen(37)*10 IDL> print,num 0.00000 10.0000 20.0000 30.0000 40.0000 50.0000 60.0000 70.0000 80.0000 90.0000 100.000 110.000 120.000 130.000 140.000 150.000 160.000 170.000 180.000 190.000 200.000 210.000 220.000 230.000 240.000 250.000 260.000 270.000 280.000 290.000 300.000 310.000 320.000 330.000 340.000 350.000 360.000 IDL> help,num NUM FLOAT = Array(37)

23 Rolando V. RaqueñoMonday, June 22, 2015 23 Two-Dimensional Plotting Displaying Two-Dimensional Graphics IDL> line = Sin(num * !DtoR) IDL> plot,line

24 Rolando V. RaqueñoMonday, June 22, 2015 24 Two-Dimensional Plotting Displaying Two-Dimensional Graphics IDL> plot,line IDL> plot,num,line

25 Rolando V. RaqueñoMonday, June 22, 2015 25 Two-Dimensional Plotting Options IDL> plot,num,line,/Psym

26 Rolando V. RaqueñoMonday, June 22, 2015 26 Two-Dimensional Plotting Options IDL> plot,num,line,Psym=1

27 Rolando V. RaqueñoMonday, June 22, 2015 27 Other Plotting Options IDL> plot,num,line,linestyle=1

28 Rolando V. RaqueñoMonday, June 22, 2015 28 Labeling IDL Plots IDL> plot,num,line,xrange=[0,360],$ ytitle='Sin(x)',Title='Sine Plot'

29 Rolando V. RaqueñoMonday, June 22, 2015 29 Other Plot Facilities plot IDL> plot,num,line,xrange=[0,360],$ ytitle='Sin(x)',Title='Sine Plot' IDL> plots,[0,360],[0,0]

30 Rolando V. RaqueñoMonday, June 22, 2015 30 Polygon Filling IDL> loadct, 5 IDL> polyfill,num(0:18),line(0:18),color=120 IDL> polyfill,num(18:36),line(18:36),color=50

31 Rolando V. RaqueñoMonday, June 22, 2015 31 Data File Inputs Copy the following files from ~rvrpci/pub/IDL/training surface.dat ctscan.dat

32 Rolando V. RaqueñoMonday, June 22, 2015 32 Three-Dimensional Plotting Displaying Three-Dimensional Graphics –To get the data into IDL, you will need to open a file and read it into an array using the following commands (N.B. this is specific for this particular data set) IDL> file=‘surface.dat’ IDL> openr,lun,file,/get_lun IDL> peak=fltarr(40,40) IDL> readf,lun,peak IDL> free_lun, lun

33 Rolando V. RaqueñoMonday, June 22, 2015 33 Surface Plots Displaying Three-Dimensional Graphics IDL> print, max(peak), min(peak) IDL> surface,peak

34 Rolando V. RaqueñoMonday, June 22, 2015 34 Surface Plots IDL> x = findgen(40)*2.5 & y=findgen(40)+50 IDL> surface,peak,x,y

35 Rolando V. RaqueñoMonday, June 22, 2015 35 Color Look-up Tables –The following command lets you view the current colors loaded into the color look-up tables IDL> cindex

36 Rolando V. RaqueñoMonday, June 22, 2015 36 Background/Foreground Colors –The following surface command lets you manipulate the background and foreground colors IDL> surface,peak,background=200,color=45, title='Surface Projection',charsize=2.0

37 Rolando V. RaqueñoMonday, June 22, 2015 37 Shaded Surface Plotting IDL> shade_surf, peak

38 Rolando V. RaqueñoMonday, June 22, 2015 38 Draping Data Over a Surface –We can drape a given surface over another one by the following command (we read in the data snow the same manner as peak) IDL>shade_surf,peak,$ shade=snow

39 Rolando V. RaqueñoMonday, June 22, 2015 39 Surface Plot Colored by Altitude –We can generate a simple elevation color map. IDL> shade_surf, peak, shade=bytscl(peak)

40 Rolando V. RaqueñoMonday, June 22, 2015 40 Simple Contour Plots –We can generate a simple contour map. IDL> contour,peak

41 Rolando V. RaqueñoMonday, June 22, 2015 41 Contour Plots Spacing –We can generate a simple contour map and adjust spacing. IDL> contour, peak, nlevels=10

42 Rolando V. RaqueñoMonday, June 22, 2015 42 Contour Plots Labelling –We can generate a simple contour map and label them IDL> contour, peak, nlevels=10, /follow

43 Rolando V. RaqueñoMonday, June 22, 2015 43 Contour Plots Spacing Adjustment –We can generate a simple contour map and adjust spacing along with line styles. IDL> contour, peak, nlevels=10, c_linestyle = indgen(5)

44 Rolando V. RaqueñoMonday, June 22, 2015 44 Colored Contour Plots –We can generate a simple contour map and adjust spacing along with line color. IDL> contour, peak, nlevels=10, c_colors = indgen(5)*20+80

45 Rolando V. RaqueñoMonday, June 22, 2015 45 Images Data Displaying Image Data –You can read in image data in a manner similar to other forms of two-dimensional data. You will need to ascertain whether the data is an ASCII file or a binary file IDL> openr, lun,’ctscan.dat’,/get_lun IDL> scan=bytarr(256,256) IDL> readu, lun, scan IDL> free_lun, lun

46 Rolando V. RaqueñoMonday, June 22, 2015 46 Image Data Displaying Image Data IDL> window, /free, xsize=256, ysize=256 IDL> tvscl, scan

47 Rolando V. RaqueñoMonday, June 22, 2015 47 Image Data Displaying Image Data IDL> window, /free, xsize=256, ysize=256 IDL> tvscl, scan IDL> tvscl,hist_equal(scan)

48 Rolando V. RaqueñoMonday, June 22, 2015 48 Image Processing Displaying Image Data IDL> window, /free, xsize=256, ysize=256 IDL> tvscl, scan IDL> tvscl, sobel(scan)

49 Rolando V. RaqueñoMonday, June 22, 2015 49 XLOADCT Routine Displaying Image Data IDL> xloadct IDL> tvscl, scan

50 Rolando V. RaqueñoMonday, June 22, 2015 50 Writing IDL Programs

51 Rolando V. RaqueñoMonday, June 22, 2015 51 General Form of an IDL Program Parts of an IDL program pro program_name [, arg1, arg2,..., argn] IDL statement #1 IDL statement #2. IDL statement #n end

52 Rolando V. RaqueñoMonday, June 22, 2015 52 Compiling an IDL Program Create a program to take celsius arguments and print out fahrenheit values pro celsius_to_fahrenheit, celsius print, 9/5*celsius+32 end To compile: IDL>.compile celsius_to_fahrenheit.pro

53 Rolando V. RaqueñoMonday, June 22, 2015 53 Executing an IDL Program To use the program in scalar mode: IDL> c = 100.0 IDL> celsius_to_fahrenheit, c To use the program in array mode: IDL> c = findgen(201)/2 IDL> celsius_to_fahrenheit, c

54 Rolando V. RaqueñoMonday, June 22, 2015 54 General Form of an IDL Function Parts of an IDL function function program_name [, arg1, arg2,..., argn] IDL statement #1 IDL statement #2. IDL statement #n return, answer end

55 Rolando V. RaqueñoMonday, June 22, 2015 55 Compiling an IDL Function Create a function to take celsius arguments and print out fahrenheit values function celsius_to_fahrenheit, celsius answer=9/5*celsius+32 return, answer end To compile: IDL>.compile celsius_to_fahrenheit.pro

56 Rolando V. RaqueñoMonday, June 22, 2015 56 Executing an IDL Function To use the program: IDL> c = findgen(201)/2 IDL> f = celsius_to_fahrenheit(c) IDL> print, f IDL> plot, c, f Equivalently: IDL> print, celsius_to_fahrenheit(c) IDL> plot, c, celsius_to_fahrenheit(c)

57 Rolando V. RaqueñoMonday, June 22, 2015 57 Program Design program file vs. function file Use functions in case of mathematical functions to allow composition of functions IDL> k=celsius_to_kelvin(fahrenheit_to_celsius(f)) Use program file in case of process not requiring the return of data IDL> write_to_file,’temperature.dat’,k

58 Rolando V. RaqueñoMonday, June 22, 2015 58 Parameter Passing in IDL IDL passes parameters into functions and programs by reference This means parameters can be modified through “side effect” pro celsius_to_fahrenheit, celsius celsius =9/5*celsius+32 end

59 Rolando V. RaqueñoMonday, June 22, 2015 59 Problems with “Side Effect” Parameter Passing IDL> a=32.0 IDL> celsius_to_fahrenheit,a % Compiled module: CELSIUS_TO_FAHRENHEIT. IDL> print,a 64.0000

60 Rolando V. RaqueñoMonday, June 22, 2015 60 A Debugging Exercise The IDL function and program examples celsius_to_fahrenheit all compile, but generate incorrect answers in some cases. This is left as a debugging exercise

61 Rolando V. RaqueñoMonday, June 22, 2015 61 Hints for Statistics Problem Study the IDL functions n_elements() size() Try to reuse as many of the functions as possible. Do not be concerned with efficiency at this point.


Download ppt "Rolando V. RaqueñoMonday, June 22, 2015 1 Basic IDL Commands SIMG 726."

Similar presentations


Ads by Google