Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case...
-
Upload
justin-horton -
Category
Documents
-
view
215 -
download
0
Transcript of Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case...
![Page 1: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/1.jpg)
Rolando V. Raqueño Friday, April 21, 202311
Special Function Implementation in IDL
A Case Study
![Page 2: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/2.jpg)
Rolando V. Raqueño Friday, April 21, 202322
Special Functions
• You have been asked or will be asked to implement to implement certain special functions that is commonly used in imaging and image system analysis
• Examples – Rect– Sinc– Gaus
![Page 3: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/3.jpg)
Rolando V. Raqueño Friday, April 21, 202333
Implementation
• Function definitions are mathematically unambiguous– the implementation of these functions are
as varied as writing styles and skill are between two individuals
• Rect function – definition to implementation a– point out the various forms used in
traditional programming languages and IDL
![Page 4: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/4.jpg)
Rolando V. Raqueño Friday, April 21, 202344
Mathematical Definition of One-Dimensional Rect
Function
Rectx xo
b
x xo
b
12
, 0
x xo
b
12
,12
x xo
b
12
, 1
![Page 5: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/5.jpg)
Rolando V. Raqueño Friday, April 21, 202355
Plot of One-Dimensional Rect Function+y
+x
x0
b1.0
Rectx x0
b
![Page 6: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/6.jpg)
Rolando V. Raqueño Friday, April 21, 202366
Uses of Rect function
• Used to describe the profile across an aperture.
• 2D Rect function can be used as a filter or mask in both the spatial and frequency domain
![Page 7: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/7.jpg)
Rolando V. Raqueño Friday, April 21, 202377
Common Implementation Pitfall
• Function construct not used• Printing out results from within the Rect
function• Looping to generate the range of x
values is embedded into the Rect function.
• Use of a three parameter function for the arguments x, x0, and b
![Page 8: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/8.jpg)
Rolando V. Raqueño Friday, April 21, 202388
Implementation Styles
• Scalar method– More Generalized and Traditional Style– Applicable to most programming
languages
• Vector method– More Efficient in Vectorized Langauages
![Page 9: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/9.jpg)
Rolando V. Raqueño Friday, April 21, 202399
Sample Implementation
function rect, x, x0, b
a = abs( (x-x0)/b )
if (a gt 0.5 ) then return, 0.0
if (a lt 0.5 ) then return, 1.0
if( a eq 0.5 ) then return, 0.5
end
![Page 10: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/10.jpg)
Rolando V. Raqueño Friday, April 21, 20231010
Quick Test of Rect Function
IDL> print, rect(0.0,0.0,1.0)
1.00000
IDL> print, rect(0.5,0.0,1.0)
0.500000
IDL> print, rect(1.0,0.0,1.0)
0.00000
![Page 11: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/11.jpg)
Rolando V. Raqueño Friday, April 21, 20231111
Additional Test of Rect Function
IDL> for x=-2.0,2.0,0.5 do print,x,rect(x,0.0,1.0)
-2.00000 0.00000 -1.50000 0.00000 -1.00000 0.00000 -0.500000 0.500000 0.00000 1.00000 0.500000 0.500000 1.00000 0.00000 1.50000 0.00000 2.00000 0.00000
![Page 12: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/12.jpg)
Rolando V. Raqueño Friday, April 21, 20231212
Simplifying the Parameter List
• Through the use of variable substitution, the parameter list can be simplified from
Rect(x,x0,b) to Rect((x-x0)/b)
x x x0
b
![Page 13: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/13.jpg)
Rolando V. Raqueño Friday, April 21, 20231313
Rect Function Implementation(Single if statement)
function rect, x
a = abs( x ) if (a gt 0.5 ) then answer = 0.0 $ else if (a lt 0.5 ) then answer = 1.0 $ else answer = 0.5
return, answer
end
![Page 14: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/14.jpg)
Rolando V. Raqueño Friday, April 21, 20231414
Rect Function ImplementationBlocked if statements
function rect, x a = abs( x ) if (a gt 0.5 ) then begin answer = 0.0 endif else if (a lt 0.5 ) then begin answer = 1.0 endif else begin answer = 0.5 endelse return, answerend
![Page 15: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/15.jpg)
Rolando V. Raqueño Friday, April 21, 20231515
Rect Function Test
IDL> print,rect(0.0)
1.00000
IDL> print,rect(0.5)
0.500000
IDL> print,rect(1.0)
0.00000
![Page 16: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/16.jpg)
Rolando V. Raqueño Friday, April 21, 20231616
Additional Rect Function Test
IDL> for x=-2.0,2.0,0.5 do print,x,rect((x-x0)/b)
-2.00000 0.00000 -1.50000 0.00000 -1.00000 0.00000 -0.500000 0.500000 0.00000 1.00000 0.500000 0.500000 1.00000 0.00000 1.50000 0.00000 2.00000 0.00000
![Page 17: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/17.jpg)
Rolando V. Raqueño Friday, April 21, 20231717
2D Rect Definition
• Use of functions is imperative
• Other methods very awkward and error prone
Rect 2dx x0
b,y y0
d
Rect
x x0
b
Rect
y y0
d
![Page 18: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/18.jpg)
Rolando V. Raqueño Friday, April 21, 20231818
Error-prone Implementation
function rect2d,x,x0,b,y,y0,d
answer=rect(x,x0,b)* $
rect(y,y0,d)
return, answer
end
![Page 19: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/19.jpg)
Rolando V. Raqueño Friday, April 21, 20231919
Error-prone Interface• Too many possibilities of transposing
parameter values – Difficult for routine to trap.
IDL>print,rect2d(0.0,0.0,1.0,0.0,0.0,1.0)
• Simplified parameter rect function, the above interface becomes less confusing.
![Page 20: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/20.jpg)
Rolando V. Raqueño Friday, April 21, 20232020
2D Rect Function
function rect2d, x, y
answer = rect(x) * rect(y)
return, answer
end
![Page 21: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/21.jpg)
Rolando V. Raqueño Friday, April 21, 20232121
Test of 2D Rect Function
IDL> print,rect2d(0.0,0.0) 1.00000IDL> print,rect2d(0.5,0.0) 0.500000IDL> print,rect2d(0.0,0.5) 0.500000IDL> print,rect2d(0.5,0.5) 0.250000IDL> print,rect2d(1.0,1.0) 0.00000
![Page 22: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/22.jpg)
Rolando V. Raqueño Friday, April 21, 20232222
Program to Test rect2d function
pro test_rect2d answer=fltarr(5,5) & j=0 for y=-1.0, 1.0, 0.5 do begin i=0 for x=-1.0, 1.0, 0.5, do begin answer(i,j)=rect2d(x,y) i=i+1 endfor j=j+1 endfor plot,answerend
![Page 23: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/23.jpg)
Rolando V. Raqueño Friday, April 21, 20232323
The Vectorized Approach
• In IDL, there is a better way of dealing with this problem.
• But first...
![Page 24: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/24.jpg)
Rolando V. Raqueño Friday, April 21, 20232424
Advanced Array Processing in IDL
![Page 25: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/25.jpg)
Rolando V. Raqueño Friday, April 21, 20232525
Accesing Array Values
IDL> a = [0,2,4,1]
IDL> b = [6,5,1,8,4,3]
IDL> print, b(a)
6 1 4 5
• Use the values of array a as indices to “look up” or “point to” the values of array b
0 1 2 3 4 5
6 5 1 8 4 3
0 1 2 3
6 1 4 5
0 1 2 3
0 2 4 1
![Page 26: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/26.jpg)
Rolando V. Raqueño Friday, April 21, 20232626
Simple Image Example
IDL> image=bindgen(5,5)
IDL> print,image
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
![Page 27: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/27.jpg)
Rolando V. Raqueño Friday, April 21, 20232727
Subsample Image using for looppro subsample_loop a=bindgen(5,5) & answer=bytarr(3,3) i=0 for m=0,4,2 do begin j=0 for n=0,4,2 do begin answer(i,j)=a(m,n) j=j+1 endfor i=i+1 endfor print,answerend
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
![Page 28: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/28.jpg)
Rolando V. Raqueño Friday, April 21, 20232828
Result of subsample_loop
IDL> subsample_loop
0 2 4
10 12 14
20 22 24
![Page 29: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/29.jpg)
Rolando V. Raqueño Friday, April 21, 20232929
Analyzing the pattern of indices
a[0,0] a[2,0] a[4,0]
a[0,2] a[2,2] a[4,2]
a[0,4] a[2,4] a[4,4]
![Page 30: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/30.jpg)
Rolando V. Raqueño Friday, April 21, 20233030
Looking at the row indices
a[0,0] a[2,0] a[4,0]
a[0,2] a[2,2] a[4,2]
a[0,4] a[2,4] a[4,4]
![Page 31: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/31.jpg)
Rolando V. Raqueño Friday, April 21, 20233131
Looking at the column indices
a[0,0] a[2,0] a[4,0]
a[0,2] a[2,2] a[4,2]
a[0,4] a[2,4] a[4,4]
![Page 32: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/32.jpg)
Rolando V. Raqueño Friday, April 21, 20233232
Defining a new variable row
IDL> row=[[0,2,4],[0,2,4],[0,2,4]]
IDL> print,row
0 2 4
0 2 4
0 2 4
![Page 33: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/33.jpg)
Rolando V. Raqueño Friday, April 21, 20233333
Defining a new variable column
IDL> column=[[0,0,0],[2,2,2],[4,4,4]]
IDL> print,column
0 0 0
2 2 2
4 4 4
![Page 34: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/34.jpg)
Rolando V. Raqueño Friday, April 21, 20233434
IDL can use arrays/matrices as indices into other arrays
IDL> b=a[row,column]
IDL> print,b
0 2 4
10 12 14
20 22 24
![Page 35: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/35.jpg)
Rolando V. Raqueño Friday, April 21, 20233535
Creating the row and column index matrices
• Currently, we created the row and column index matrices by hand.
• We could use a for loop to fill the values, but there is a more convenient way in IDL using the # operator
![Page 36: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/36.jpg)
Rolando V. Raqueño Friday, April 21, 20233636
The # operator• For a given array a and b, a # b will have the
effect of multiplying the columns of the first array by the rows of the second array
• Suppose a = [0,2,4] and b = [1,1,1] then
IDL> a=[0,2,4]IDL> b=[1,1,1]IDL> print,a#b 0 2 4 0 2 4 0 2 4
![Page 37: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/37.jpg)
Rolando V. Raqueño Friday, April 21, 20233737
The # operator
• LikewiseIDL> print,b#a
0 0 0
2 2 2
4 4 4
![Page 38: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/38.jpg)
Rolando V. Raqueño Friday, April 21, 20233838
The General Form of Creating Index Matrices
• For the Row Index Matrix (rim) given a vector row containing the indices for a given row
IDL> rim=row#replicate(1,n_elements(column))
• Where replicate(1,n_elements(column)) is creating a column of ones (1) equal to the number of elements in the vector column
![Page 39: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/39.jpg)
Rolando V. Raqueño Friday, April 21, 20233939
The General Form of Creating Index Matrices
• For the Column Index Matrix (cim) given a vector column containing the indices for a given column
IDL> cim=replicate(1,n_elements(row))#columns
• Where replicate(1,n_elements(row)) is creating a row of ones (1) equal to the number of elements in the vector row
![Page 40: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/40.jpg)
Rolando V. Raqueño Friday, April 21, 20234040
Vectorized rect functionfunction rect, x answer = x abs_x = abs(x)
gt_half = where( abs_x gt 0.5, count_gt) eq_half = where( abs_x eq 0.5, count_eq ) lt_half = where( abs_x lt 0.5, count_lt )
if (count_gt ne 0) then answer(gt_half)=0.0 if (count_eq ne 0) then answer(eq_half)=0.5 if (count_lt ne 0) then answer(lt_half)=1.0 return, answerend
![Page 41: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/41.jpg)
Rolando V. Raqueño Friday, April 21, 20234141
Sample Use of Vectorized rect
IDL> x=[-1.0,-0.5,0.0,0.5,1.0]
OR
IDL> x=findgen(5)*0.5-1.0
IDL> print,rect(x)
0.00000 0.500000 1.00000
0.500000 0.00000
![Page 42: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/42.jpg)
Rolando V. Raqueño Friday, April 21, 20234242
What about Vectorized rect2d function?
2D Rect Function
function rect2d, x, y
answer = rect(x) * rect(y)
return, answer
end
• We don’t need to do anything!
![Page 43: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/43.jpg)
Rolando V. Raqueño Friday, April 21, 20234343
Testing Procedure of the Vectorized rect2d
• Define the extents of the x and y values you want to calculate
• Create the x and y index matrix (or more appropriately x and y value matrix)
• Pass the x and y value matrix into the function
![Page 44: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/44.jpg)
Rolando V. Raqueño Friday, April 21, 20234444
Define the extents of the x and y values
IDL> x=[-1.0,-0.5,0.0,0.5,1.0]
IDL> y=[-2.0,-1.5,-1.0,
-0.5,0.0,0.5,1.0,1.5,2.0]
![Page 45: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/45.jpg)
Rolando V. Raqueño Friday, April 21, 20234545
Create the x and y value matrices
IDL> xm=x#replicate(1.0,n_elements(y))
IDL> print,xm -1.00000 -0.500000 0.00000 0.500000 1.00000
-1.00000 -0.500000 0.00000 0.500000 1.00000
-1.00000 -0.500000 0.00000 0.500000 1.00000
-1.00000 -0.500000 0.00000 0.500000 1.00000
-1.00000 -0.500000 0.00000 0.500000 1.00000
-1.00000 -0.500000 0.00000 0.500000 1.00000
-1.00000 -0.500000 0.00000 0.500000 1.00000
-1.00000 -0.500000 0.00000 0.500000 1.00000
-1.00000 -0.500000 0.00000 0.500000 1.00000
![Page 46: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/46.jpg)
Rolando V. Raqueño Friday, April 21, 20234646
Create the x and y value matrices
IDL> ym=replicate(1.0,n_elements(x))#y
IDL> print,ym -2.00000 -2.00000 -2.00000 -2.00000 -2.00000
-1.50000 -1.50000 -1.50000 -1.50000 -1.50000
-1.00000 -1.00000 -1.00000 -1.00000 -1.00000
-0.500000 -0.500000 -0.500000 -0.500000 -0.500000
0.00000 0.00000 0.00000 0.00000 0.00000
0.500000 0.500000 0.500000 0.500000 0.500000
1.00000 1.00000 1.00000 1.00000 1.00000
1.50000 1.50000 1.50000 1.50000 1.50000
2.00000 2.00000 2.00000 2.00000 2.00000
![Page 47: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/47.jpg)
Rolando V. Raqueño Friday, April 21, 20234747
Pass the x and y value matrix into the function
IDL> print,rect2d(xm,ym) 0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.250000 0.500000 0.250000 0.00000
0.00000 0.500000 1.00000 0.500000 0.00000
0.00000 0.250000 0.500000 0.250000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
![Page 48: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/48.jpg)
Rolando V. Raqueño Friday, April 21, 20234848
Statistics Function Implementation (Revisited)
Vector Programming Approach
Using Matrix Multiplication
![Page 49: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/49.jpg)
Rolando V. Raqueño Friday, April 21, 20234949
sum.pro
function sum, x
n = n_elements( x )
answer = 0.0
for i = 0L, n-1 do begin
answer = answer + x(i)
endfor
return, answer
end
![Page 50: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/50.jpg)
Rolando V. Raqueño Friday, April 21, 20235050
sum.pro
function sum, x
n = n_elements( x )
a = reform( x, n)
answer=a##transpose(replicate(1.0,n))
return, answer
end
![Page 51: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/51.jpg)
Rolando V. Raqueño Friday, April 21, 20235151
Using Matrix Multiplication
0.50.4
0.30.2
0.10.0
0.50.40.30.20.10.0
0.50.40.30.20.10.0
reform
0.1
0.1
0.1
0.1
0.1
0.1
## = 0.15
transpose(replicate(1.0,n))
![Page 52: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/52.jpg)
Rolando V. Raqueño Friday, April 21, 20235252
sum_squares.pro
function sum_squares, x
squares = x^2.0
answer= sum( squares )
return, answer
end
![Page 53: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/53.jpg)
Rolando V. Raqueño Friday, April 21, 20235353
sum_squares.pro
function sum_squares, x
n = n_elements( x )
a = reform( x, n)
answer = a ## transpose(a)
return, answer
end
![Page 54: Rolando V. RaqueñoWednesday, October 21, 2015 1 Special Function Implementation in IDL A Case Study.](https://reader035.fdocuments.in/reader035/viewer/2022062423/56649edd5503460f94bee462/html5/thumbnails/54.jpg)
Rolando V. Raqueño Friday, April 21, 20235454
Using Matrix Multiplication
0.50.4
0.30.2
0.10.0
0.50.40.30.20.10.0
0.50.40.30.20.10.0
reform
0.5
0.4
0.3
0.2
0.1
0.0
## = 0.55