IDL__入門教程_第1頁
IDL__入門教程_第2頁
IDL__入門教程_第3頁
IDL__入門教程_第4頁
IDL__入門教程_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、IDL IDL 入門教程入門教程北京星圖環(huán)宇科技有限公司北京星圖環(huán)宇科技有限公司 王志成王志成2006.3.23一、一、IDLIDL基礎(chǔ)基礎(chǔ) IDL是進行數(shù)據(jù)分析、可視化及跨平臺應(yīng)用開發(fā)的最佳選擇。IDL集可視、交互分析、大型商業(yè)開發(fā)為一體,為您提供了最完善、最靈活最有效的開發(fā)環(huán)境。 IDL是美國RSI公司推出的面向矩陣的第四代計算機語言。IDLIDL語言的特性語言的特性 高級圖像處理能力高級圖像處理能力 交互式二維和三維圖形技術(shù)交互式二維和三維圖形技術(shù) 面向?qū)ο蟮木幊谭绞矫嫦驅(qū)ο蟮木幊谭绞?OpenGLOpenGL圖形加速圖形加速 量化可視化表現(xiàn)量化可視化表現(xiàn) 成數(shù)學(xué)與統(tǒng)計學(xué)算法成數(shù)學(xué)與統(tǒng)計

2、學(xué)算法 靈活的數(shù)據(jù)輸入輸出方式靈活的數(shù)據(jù)輸入輸出方式 跨平臺圖形用戶界面工具包跨平臺圖形用戶界面工具包 連接連接ODBCODBC兼容數(shù)據(jù)庫兼容數(shù)據(jù)庫 多種程序連接工具多種程序連接工具IDLIDL的發(fā)展的發(fā)展 在國外在國外IDLIDL已經(jīng)被列為大學(xué)的標準課程,其功能和應(yīng)用已經(jīng)被列為大學(xué)的標準課程,其功能和應(yīng)用效果完全可以替代如效果完全可以替代如MatlabMatlab等其他同類科學(xué)計算應(yīng)用等其他同類科學(xué)計算應(yīng)用軟件。軟件。 在國內(nèi)在國內(nèi)IDLIDL要比國外稍微滯后,還處在推廣和應(yīng)用的初要比國外稍微滯后,還處在推廣和應(yīng)用的初期。許多科研單位和一些大學(xué)在與國外單位交流中,期。許多科研單位和一些大學(xué)在

3、與國外單位交流中,特別是一些留學(xué)歸國人員,是特別是一些留學(xué)歸國人員,是IDLIDL在國內(nèi)應(yīng)用的先行者在國內(nèi)應(yīng)用的先行者和忠實用戶。和忠實用戶。 隨著隨著IDLIDL應(yīng)用和市場的廣泛進入和從科研院所的高端應(yīng)應(yīng)用和市場的廣泛進入和從科研院所的高端應(yīng)用到更廣泛地民用化的接受過程,越來越多的人將了用到更廣泛地民用化的接受過程,越來越多的人將了解和接受應(yīng)用解和接受應(yīng)用IDLIDL。IDLIDL程序示例:程序示例: IDL DEIDL DE介紹介紹 HellowHellow World World程序程序 Demo_tourDemo_tour 本程序顯示了本程序顯示了IDLIDL提供的豐富的提供的豐富的d

4、emodemo程序。程序。IDL IDL 基礎(chǔ)基礎(chǔ) IDLIDL表達式表達式. . 點命令點命令$ $ 行連接符行連接符 執(zhí)行執(zhí)行IDLIDL的批文件的批文件;IDL;IDL程序注釋符程序注釋符 IDLIDL命令行輸入命令行輸入Journal Journal 使用使用JournalJournal記錄輸入的命令記錄輸入的命令使用使用help,printhelp,print查看變量的信息查看變量的信息查看幫助文檔查看幫助文檔如何在命令行輸入多行命令如何在命令行輸入多行命令I(lǐng)DL IDL 基礎(chǔ)基礎(chǔ) IDLIDL程序的類型程序的類型主程序主程序 啟動程序啟動程序 與文件名一致與文件名一致過程過程 以以

5、Pro Pro 開頭開頭函數(shù)函數(shù) 以以FunctionFunction開頭開頭 IDLIDL程序的位置參數(shù)和關(guān)鍵字程序的位置參數(shù)和關(guān)鍵字位置參數(shù)位置參數(shù)關(guān)鍵字關(guān)鍵字1.11.1、IDLIDL變量變量 變量定義變量定義 變量在使用前,無需說明類型。變量在使用前,無需說明類型。 變量的命名規(guī)則變量的命名規(guī)則變量名稱必須以字母和下劃線開頭,可以包括字母、數(shù)字、變量名稱必須以字母和下劃線開頭,可以包括字母、數(shù)字、下劃線、美元符號下劃線、美元符號正確:正確:reade6_$filereade6_$fileonly_8_bitonly_8_bitComputerTypeComputerTypevariab

6、lesvariables_day_of_year_day_of_year錯誤:錯誤:name.lastname.lastthird%filethird%file4th_list4th_list$temp$temp 變量數(shù)據(jù)類型變量數(shù)據(jù)類型 Byte Byte 字節(jié)型字節(jié)型IntInt 有符號整數(shù)有符號整數(shù)UintUint無符號整數(shù)無符號整數(shù) LongLong有符號長整型有符號長整型 UlongUlong無符號長整型無符號長整型 Long64 64Long64 64位位長整型長整型Float Float 浮點型浮點型DoubleDouble雙精度浮點型雙精度浮點型ComplexComplex復(fù)數(shù)

7、復(fù)數(shù) DcomplexDcomplex雙精度復(fù)數(shù)雙精度復(fù)數(shù)String String 字符串字符串0-327670-32767個字符個字符StructStruct 結(jié)構(gòu)結(jié)構(gòu)Pointer Pointer 指針指針ObjrefObjref 對象的引用對象的引用數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型數(shù)據(jù)類型創(chuàng)建變量例子創(chuàng)建變量例子數(shù)據(jù)類型轉(zhuǎn)換函數(shù)數(shù)據(jù)類型轉(zhuǎn)換函數(shù)ByteByteVarVar=1B=1BthisVarthisVar=Byte(variable=Byte(variable) )IntIntVarVar=1=1thisVarthisVar=Fix(variable=Fix(variable

8、) )LongLongVarVar=1L=1LthisVarthisVar=Long(variable=Long(variable) )Long64Long64VarVar=1LL=1LLthisVarthisVar=Long64(variable)=Long64(variable)UintUintVarVar=1U=1UthisVarthisVar=Uint(variable=Uint(variable) )FloatFloatVarVar=1.0=1.0thisVarthisVar=Float(variable=Float(variable) )DoubleDoubleVarVar=1.0

9、D=1.0DthisVarthisVar=Double(variable=Double(variable) )StringStringVarVar=thisVarthisVar=String(variable=String(variable) )PointerPointerVarVar=ptr_new=ptr_new()()ObjectObjectVarVar=obj_new=obj_new()()1.21.2、IDLIDL數(shù)組數(shù)組 IDLIDL數(shù)組運算簡介數(shù)組運算簡介IDLIDL面向矩陣的特性保證數(shù)組運算時不用進行循環(huán)。面向矩陣的特性保證數(shù)組運算時不用進行循環(huán)。IDLIDL中使用數(shù)組的兩個最

10、大優(yōu)勢體現(xiàn)在:中使用數(shù)組的兩個最大優(yōu)勢體現(xiàn)在:(1)(1)數(shù)組操作比循環(huán)操作快得多數(shù)組操作比循環(huán)操作快得多(2)(2)數(shù)組語法比相對的循環(huán)語法更加精練數(shù)組語法比相對的循環(huán)語法更加精練例子:對數(shù)組元素求和例子:對數(shù)組元素求和NptsNpts=1000000L=1000000LData=randomu(-1L,npts)Data=randomu(-1L,npts)Sum=total(dataSum=total(data) IDL) IDL數(shù)組操作語句數(shù)組操作語句 Sum=0.0Sum=0.0For i=0L,(npts-1L) do begin sum=sum+dataiFor i=0L,(npt

11、s-1L) do begin sum=sum+datai 循環(huán)語句循環(huán)語句 數(shù)組的創(chuàng)建數(shù)組的創(chuàng)建 (1)(1)利用利用創(chuàng)建。創(chuàng)建。 (2)(2)利用創(chuàng)建函數(shù)創(chuàng)建利用創(chuàng)建函數(shù)創(chuàng)建 Byte bytarr() bindgenByte bytarr() bindgen() () Int intarr() indgen Int intarr() indgen()() long lonarr() lindgen long lonarr() lindgen()() ulong ulonarr() ulindgen ulong ulonarr() ulindgen()() float fltarr() fi

12、ndgen float fltarr() findgen()() double dblarr() dindgen double dblarr() dindgen()() string strarr() sindgen string strarr() sindgen()()make_arraymake_array make_array(3,2,/byte) make_array(3,2,/byte) 數(shù)組的存儲格式數(shù)組的存儲格式IDLIDL中數(shù)組元素的存儲是按列進行的。按列存儲的方式意味中數(shù)組元素的存儲是按列進行的。按列存儲的方式意味著連續(xù)的數(shù)組元素也將按順序被存儲,而且數(shù)組的第一維著連續(xù)的數(shù)組

13、元素也將按順序被存儲,而且數(shù)組的第一維(列)變化的最快。(列)變化的最快。 數(shù)組的下標數(shù)組的下標數(shù)組的下標可以是標量也可以是矢量。數(shù)組的下標可以是標量也可以是矢量。進行下標操作時,如果下標超過了范圍,則該下標被轉(zhuǎn)換為進行下標操作時,如果下標超過了范圍,則該下標被轉(zhuǎn)換為在允許范圍內(nèi)的最小或最大的下標值。在允許范圍內(nèi)的最小或最大的下標值。1.31.3、表達式和運算法則、表達式和運算法則 表達式的書寫規(guī)則表達式的書寫規(guī)則表達式結(jié)果的類型將由表達式右邊變量的類型決定。表達式結(jié)果的類型將由表達式右邊變量的類型決定。 運算符運算符數(shù)學(xué):數(shù)學(xué):+-+-* */mod /mod 最大最大 邏輯:邏輯:Not

14、Eq Ne Le Lt Ge Gt And Or XorNot Eq Ne Le Lt Ge Gt And Or Xor 數(shù)組數(shù)組:#:#數(shù)組乘數(shù)組乘( (列乘行列乘行) #) #矩陣乘矩陣乘( (行乘列行乘列) )指針指針: :* * 運算符的優(yōu)先級運算符的優(yōu)先級()()指針指針數(shù)組數(shù)組 / mod+- Not/ mod+- Not邏輯邏輯1.41.4、數(shù)組運算、數(shù)組運算 如果表達式中有一個變量是數(shù)組,結(jié)果也是數(shù)組如果表達式中有一個變量是數(shù)組,結(jié)果也是數(shù)組 如果表達式左邊是數(shù)組,右邊是一個標量,則整個數(shù)如果表達式左邊是數(shù)組,右邊是一個標量,則整個數(shù)組將被賦予該標量的值。組將被賦予該標量的值。

15、A=1,2,3,4 B=3,4,5,6A+B, A*BA=10.0 B=10.0,20.0,30.0,40.0A+B,A*B 取大取大()()、取小、取小()(00 a=2,4,6,7 b=4,5,5,6 a=2,4,6,7 b=4,5,5,6 print, ab print, ab關(guān)系運算符關(guān)系運算符 eq ne le lt ge gteq ne le lt ge gt 返回一個數(shù)字結(jié)果,其中真值用返回一個數(shù)字結(jié)果,其中真值用1B1B表示,假用表示,假用0B0B表示。表示。 關(guān)系運算符也可以作用于數(shù)組的自變量,如果兩個自變量都是數(shù)組,關(guān)系運算符也可以作用于數(shù)組的自變量,如果兩個自變量都是數(shù)組

16、,那么關(guān)系運算符將依次作用于兩個數(shù)組中每一對對應(yīng)的元素。那么關(guān)系運算符將依次作用于兩個數(shù)組中每一對對應(yīng)的元素。 a=1.0 b=2.0 help,a gta=1.0 b=2.0 help,a gt b b if (a lt b) then print,True if (a lt b) then print,True a=5 b=bindgen(9) a=5 b=bindgen(9) print,b print,b c=b le a c=b le a Print,c Print,c a=2,4,6,8 b=3,4,5,6 print,a gt a=2,4,6,8 b=3,4,5,6 print,

17、a gt b b可以用于屏蔽數(shù)組中的某些值。可以用于屏蔽數(shù)組中的某些值。 arr=indgen(9) mask=arr ge 5 result=maskarr=indgen(9) mask=arr ge 5 result=mask* *arrarr 1.51.5數(shù)組操作函數(shù)數(shù)組操作函數(shù)數(shù)組元素的數(shù)目數(shù)組元素的數(shù)目 n_elementsn_elements函數(shù)返回數(shù)組中所有元素的數(shù)目:函數(shù)返回數(shù)組中所有元素的數(shù)目: arr=findgen(32,32) print,n_elements(arrarr=findgen(32,32) print,n_elements(arr) )數(shù)組的大小和類型數(shù)組

18、的大小和類型 sizesize函數(shù)返回一個長整型的矢量結(jié)果,包含了輸入數(shù)組的大小和函數(shù)返回一個長整型的矢量結(jié)果,包含了輸入數(shù)組的大小和類型信息??蛇x關(guān)鍵字類型信息??蛇x關(guān)鍵字n_dimensions,dimensions,type,tname,n_elementsn_dimensions,dimensions,type,tname,n_elements分別返回維數(shù)、分別返回維數(shù)、每維的大小、類型代碼、類型名稱和元素個數(shù)每維的大小、類型代碼、類型名稱和元素個數(shù) arrarr=dist(256)=dist(256) help,arr print,size(arr help,arr print,si

19、ze(arr,/dimension) ,/dimension) print,size(arr,/type) print,size(arr,/tname print,size(arr,/type) print,size(arr,/tname) ) print,size(arr,/n_elements print,size(arr,/n_elements) ) 最大值和最小值最大值和最小值 max min max min 函數(shù)函數(shù) arr=dist(32) print,min(arr),max(arrarr=dist(32) print,min(arr),max(arr) ) 總和總和 total

20、total函數(shù)返回數(shù)組元素的總和,也可以添加可選變量來函數(shù)返回數(shù)組元素的總和,也可以添加可選變量來計算特定維度的元素總和。計算特定維度的元素總和。 totaltotal函數(shù)還可以使用可選的關(guān)鍵字函數(shù)還可以使用可選的關(guān)鍵字cumulativecumulative來計算累來計算累計的和。計的和。 arrarr=indgen(3,3)=indgen(3,3) print,total(arr print,total(arr) ) arr=indgen(9) print,total(arr arr=indgen(9) print,total(arr,/cumulative),/cumulative)1.

21、61.6數(shù)組中元素的定位數(shù)組中元素的定位 查找符合條件的值查找符合條件的值 wherewhere函數(shù)返回數(shù)組或數(shù)組表達式中非零元素的下標,函數(shù)返回數(shù)組或數(shù)組表達式中非零元素的下標,使用使用wherewhere函數(shù)和邏輯表達式可以查找符合條件的值。函數(shù)和邏輯表達式可以查找符合條件的值。 wherewhere函數(shù)允許引入一個可選變量函數(shù)允許引入一個可選變量countcount來檢查是否找來檢查是否找到符合條件的值。到符合條件的值。 使用使用wherewhere函數(shù)時,數(shù)組使用一維下標函數(shù)時,數(shù)組使用一維下標 arrarr=indgen(9)=indgen(9)* *1010 index=where

22、(arr gt 35) print,arrindex index=where(arr gt 35) print,arrindex 1.71.7改變數(shù)組的維度和大小改變數(shù)組的維度和大小 改變數(shù)組的大小改變數(shù)組的大小 rebinrebin() () 通過整數(shù)因子數(shù)組的大小通過整數(shù)因子數(shù)組的大小 congridcongrid() () 調(diào)整數(shù)組到任意大小調(diào)整數(shù)組到任意大小 Arr=20,30,40 resizeArrArr=20,30,40 resizeArr=rebin(arr,9,/sample)=rebin(arr,9,/sample)conArrconArr=congrid(arr,9)=c

23、ongrid(arr,9)conArrconArr=congrid(arr,10)=congrid(arr,10) 1.81.8結(jié)構(gòu)結(jié)構(gòu) 結(jié)構(gòu)是由一組類型不同的常量、變量和數(shù)組組合而成結(jié)構(gòu)是由一組類型不同的常量、變量和數(shù)組組合而成的組合數(shù)據(jù)類型。結(jié)構(gòu)中的每一個變量或者數(shù)組成為的組合數(shù)據(jù)類型。結(jié)構(gòu)中的每一個變量或者數(shù)組成為結(jié)構(gòu)的成員。結(jié)構(gòu)的成員。 結(jié)構(gòu)分為匿名結(jié)構(gòu)和署名結(jié)構(gòu)兩種,匿名結(jié)構(gòu)是指沒結(jié)構(gòu)分為匿名結(jié)構(gòu)和署名結(jié)構(gòu)兩種,匿名結(jié)構(gòu)是指沒有名字的結(jié)構(gòu)。如果在使用過程中,結(jié)構(gòu)成員的個數(shù)有名字的結(jié)構(gòu)。如果在使用過程中,結(jié)構(gòu)成員的個數(shù)和類型可能發(fā)生變化,一般使用匿名結(jié)構(gòu);否則使用和類型可能發(fā)生變化,一

24、般使用匿名結(jié)構(gòu);否則使用署名結(jié)構(gòu)。署名結(jié)構(gòu)。 匿名結(jié)構(gòu)一般用于程序之間值的傳遞,署名結(jié)構(gòu)主要匿名結(jié)構(gòu)一般用于程序之間值的傳遞,署名結(jié)構(gòu)主要用在事件結(jié)構(gòu)中用在事件結(jié)構(gòu)中.1匿名結(jié)構(gòu)匿名結(jié)構(gòu) 創(chuàng)建:創(chuàng)建:結(jié)構(gòu)變量結(jié)構(gòu)變量 = = 成員成員1 1:表達式:表達式1 1,成員,成員2 2:表達式:表達式2 2,成,成員員n n:表達式:表達式nn 賦值:賦值:格式:結(jié)構(gòu)變量格式:結(jié)構(gòu)變量. .成員成員 = = 表達式表達式 調(diào)用:調(diào)用: 結(jié)構(gòu)變量結(jié)構(gòu)變量. .成員成員 = = 表達式表達式.2署名結(jié)構(gòu)署名結(jié)構(gòu) 創(chuàng)建:創(chuàng)建:結(jié)構(gòu)變量結(jié)構(gòu)變量=結(jié)構(gòu)名,成員結(jié)構(gòu)名,成員1:1

25、:表達式表達式1 1,成員,成員2:2:表達式表達式2, 2, , ,成員成員n:n:表達式表達式nn.3結(jié)構(gòu)數(shù)組結(jié)構(gòu)數(shù)組 結(jié)構(gòu)數(shù)組可以使用已有的結(jié)構(gòu)變量和函數(shù)結(jié)構(gòu)數(shù)組可以使用已有的結(jié)構(gòu)變量和函數(shù)REPLICATEREPLICATE創(chuàng)建,創(chuàng)建,對于署名結(jié)構(gòu)還可以使用結(jié)構(gòu)名創(chuàng)建,其格式為:對于署名結(jié)構(gòu)還可以使用結(jié)構(gòu)名創(chuàng)建,其格式為: 格式格式1 1:結(jié)構(gòu)數(shù)組名:結(jié)構(gòu)數(shù)組名 = REPLICATE( = REPLICATE( 結(jié)構(gòu)變量,結(jié)構(gòu)變量,D1D1, ,D8 )D8 )1.91.9指針指針 指針的創(chuàng)建指針的創(chuàng)建 指針變量指針變量 = PTR_NEW(= PTR_NEW(變量變

26、量) 指針的調(diào)用指針的調(diào)用 * *指針變量指針變量 檢測指針的有效性檢測指針的有效性 result=ptr_valid(ptrresult=ptr_valid(ptr) ) 指針的釋放指針的釋放 ptr_free,ptrptr_free,ptr 指針數(shù)組指針數(shù)組 p_arrp_arr=ptrarr(d1,d2,d3,=ptrarr(d1,d2,d3,) )二、編寫二、編寫IDLIDL程序程序2.12.1、定義和編譯程序、定義和編譯程序 過程過程(pro)(pro) 過程一般將幾個相關(guān)的操作加到一個程序模塊中。過程一般將幾個相關(guān)的操作加到一個程序模塊中。 過程以過程以pro pro 開頭,開頭,

27、endend結(jié)束結(jié)束 函數(shù)函數(shù)(function)(function) 函數(shù)一般將一個操作加載到一個程序模塊中,并返回函數(shù)一般將一個操作加載到一個程序模塊中,并返回結(jié)果結(jié)果 函數(shù)以函數(shù)以functionfunction開頭,開頭,endend結(jié)束,并包括一個結(jié)束,并包括一個returnreturn語句返回結(jié)果語句返回結(jié)果 命名和編譯源文件命名和編譯源文件 命名一個命名一個IDLIDL源文件的標志形式是在過程或函數(shù)名稱后加源文件的標志形式是在過程或函數(shù)名稱后加上擴展名上擴展名. 過程和函數(shù)都可以通過過程和函數(shù)都可以通過pile命令進行手動編譯或命令進行手動編譯或是通過是通過IDL

28、IDEIDL IDE環(huán)境進行編譯。環(huán)境進行編譯。 當需要時,過程和函數(shù)會在運行時自動編譯,如果當需要時,過程和函數(shù)會在運行時自動編譯,如果IDLIDL調(diào)調(diào)用的過程或函數(shù)之前未被編譯過,則用的過程或函數(shù)之前未被編譯過,則IDLIDL會搜索路徑下所有會搜索路徑下所有的文件夾以搜索源文件的名稱。的文件夾以搜索源文件的名稱。2.22.2控制語句控制語句 If 語句 if 條件 then 語句 if 條件 then begin 語句 endif if 條件 then 語句 else 語句 if 條件 then begin 語句 endif else begin 語句 endelseCaseCase語句語

29、句 casecase語句根據(jù)一個標量的表達式來選擇某個語句或語句塊運行。語句根據(jù)一個標量的表達式來選擇某個語句或語句塊運行。 case case 表達式表達式 ofof 情況情況1 1: 情況情況2 2:語句:語句 情況情況3 3:beginbegin 語句語句 endend else: else: 語句語句 endcaseendcase 當表達式和其中的某個情況匹配,相應(yīng)的語句被執(zhí)行,當表達式和其中的某個情況匹配,相應(yīng)的語句被執(zhí)行, casecase語句結(jié)語句結(jié)束,如果沒有匹配的情況,那么執(zhí)行束,如果沒有匹配的情況,那么執(zhí)行elseelse下的語句,如果沒有下的語句,如果沒有elseelse

30、語語句,將會發(fā)生錯誤,建議在句,將會發(fā)生錯誤,建議在case case 語句中都加上語句中都加上elseelse test_ test_ForFor語句語句 for for 語句每次循環(huán)執(zhí)行一個語句或語句塊語句每次循環(huán)執(zhí)行一個語句或語句塊 for i=v1,v2 do for i=v1,v2 do 語句語句 for i=v1,v2, inc do for i=v1,v2, inc do 語句語句 for i=v1,v2,inc do beginfor i=v1,v2,inc do begin 語句語句 endforendfor 默認條件下增量為默認條件下增量為1

31、 1,也可以設(shè)定增量,也可以設(shè)定增量WhileWhile語句語句 當特定的條件為真,當特定的條件為真,whilewhile語句執(zhí)行單個語句或語句塊語句執(zhí)行單個語句或語句塊 while while 條件條件 do do 語句語句 while while 條件條件 do begindo begin 語句語句 endwhileendwhileTest_Test_ReturnReturn語句語句 returnreturn語句在當前程序單元中產(chǎn)生一個即時出口,并返回控制。語句在當前程序單元中產(chǎn)生一個即時出口,并返回控制。 return,return,結(jié)果結(jié)果 returnre

32、turn Break Break語句語句 breakbreak語句用來中斷循環(huán)的執(zhí)行語句用來中斷循環(huán)的執(zhí)行 breakbreakContinueContinue語句語句 continuecontinue語句終止本次循環(huán)的執(zhí)行,執(zhí)行下次循環(huán)語句終止本次循環(huán)的執(zhí)行,執(zhí)行下次循環(huán) continuecontinueTest_Test_Test_Test_Test_Test_2.32.3參數(shù)和關(guān)鍵字參數(shù)和關(guān)鍵字 參數(shù)參數(shù) 參數(shù)用來將變量和表達式傳遞到過程或函數(shù)中。參數(shù)參數(shù)用來將變量

33、和表達式傳遞到過程或函數(shù)中。參數(shù)有時也被稱為位置參數(shù),因為它們在自變量中的位置有時也被稱為位置參數(shù),因為它們在自變量中的位置決定了它們在調(diào)用的過程或函數(shù)中如何被使用。參數(shù)決定了它們在調(diào)用的過程或函數(shù)中如何被使用。參數(shù)通常作為輸入通常作為輸入/ /輸出自變量,因為這些自變量在過程或輸出自變量,因為這些自變量在過程或函數(shù)中不可缺少。函數(shù)中不可缺少。 關(guān)鍵字關(guān)鍵字 關(guān)鍵字為可選自變量或表達式,它可以傳遞給調(diào)用關(guān)鍵字為可選自變量或表達式,它可以傳遞給調(diào)用程序,但不是強制性的。輸入關(guān)鍵字可以用來指定一程序,但不是強制性的。輸入關(guān)鍵字可以用來指定一個自變量,或者用來設(shè)置一個布爾標識。個自變量,或者用來設(shè)置

34、一個布爾標識。使用參數(shù)和關(guān)鍵字使用參數(shù)和關(guān)鍵字 在傳遞給過程或函數(shù)之前,輸入的參數(shù)必須先定義。一個合理的在傳遞給過程或函數(shù)之前,輸入的參數(shù)必須先定義。一個合理的過程或函數(shù),都必須先檢測其中任何的強制性輸入自變量是否已過程或函數(shù),都必須先檢測其中任何的強制性輸入自變量是否已經(jīng)定義,然后在進行其他操作。經(jīng)定義,然后在進行其他操作。 輸出位置參數(shù)和關(guān)鍵字通常在過程或函數(shù)中創(chuàng)建,因此不需要在輸出位置參數(shù)和關(guān)鍵字通常在過程或函數(shù)中創(chuàng)建,因此不需要在調(diào)用過程或函數(shù)時定義。調(diào)用過程或函數(shù)時定義。檢測參數(shù)和關(guān)鍵字檢測參數(shù)和關(guān)鍵字 n_paramsn_params() () 返回傳遞的參數(shù)數(shù)目返回傳遞的參數(shù)數(shù)目

35、 n_elementsn_elements() () 返回一個變量中元素的數(shù)目返回一個變量中元素的數(shù)目( (零表示未定義零表示未定義) ) size() size() 返回一個變量的類型和大小信息返回一個變量的類型和大小信息 keyword_setkeyword_set 用于檢測布爾關(guān)鍵字,如果自變量定義則返回用于檢測布爾關(guān)鍵字,如果自變量定義則返回為真為真EE 2.42.4全局變量全局變量 只讀的系統(tǒng)變量只讀的系統(tǒng)變量 保存了當前保存了當前IDLIDL時間段的信息。時間段的信息。 !! 當前圖像設(shè)備的名稱當前圖像設(shè)備的名稱 !d.win

36、dow!d.window 當前圖形窗口的索引當前圖形窗口的索引 !d.table_size!d.table_size 當前顏色表的大小當前顏色表的大小 可寫的系統(tǒng)變量可寫的系統(tǒng)變量 可寫的系統(tǒng)變量可以用來調(diào)整可寫的系統(tǒng)變量可以用來調(diào)整IDLIDL的默認設(shè)置。如果的默認設(shè)置。如果用戶改變了可寫系統(tǒng)變量的值,那么這種改變在所有用戶改變了可寫系統(tǒng)變量的值,那么這種改變在所有層次上都是有效的。層次上都是有效的。 !p.multi!p.multi 設(shè)置多面板成圖設(shè)置多面板成圖 !p.font!p.font 為圖形中的字符選擇默認字體為圖形中的字符選擇默認字體 !order !order 控制圖像顯示順序

37、控制圖像顯示順序1 1、直接圖形法介紹、直接圖形法介紹直接圖形法是將直接圖形法是將IDLIDL將圖形或圖像直接繪制在用戶指定的圖形設(shè)備上。將圖形或圖像直接繪制在用戶指定的圖形設(shè)備上。直接圖形法,速度快,交互差,和圖形設(shè)備有關(guān)直接圖形法,速度快,交互差,和圖形設(shè)備有關(guān)直接圖形法對內(nèi)存有默認的管理方法,占用內(nèi)存少,用戶不必自己直接圖形法對內(nèi)存有默認的管理方法,占用內(nèi)存少,用戶不必自己釋放內(nèi)存。釋放內(nèi)存。IDLIDL支持的圖形設(shè)備:支持的圖形設(shè)備:設(shè)備名稱設(shè)備名稱描述描述設(shè)備類型設(shè)備類型WINWINWindowsWindows顯示器顯顯示器顯示示MACMACMAC OSMAC OS顯示器顯顯示器顯示

38、示X XX WindowX Window顯示器顯顯示器顯示示PSPSPostScriptPostScript文件文件PRINTERPRINTER打印機打印機打印機打印機 圖形設(shè)備的選擇圖形設(shè)備的選擇 通過通過set_plotset_plot程序可以選擇一個圖形設(shè)備,所有接下程序可以選擇一個圖形設(shè)備,所有接下去的圖形操作都輸入到該設(shè)備中。去的圖形操作都輸入到該設(shè)備中。 entry_device=!entry_device=! set_plot,PS set_plot,PS plot,indgen(10) plot,indgen(10) device,/close_file

39、 device,/close_file set_plot,entry_device set_plot,entry_device 2 2、顯示模式、顯示模式8 8位顯示模式位顯示模式 最多支持最多支持256256色色 相對應(yīng)于一個顏色表相對應(yīng)于一個顏色表 所有的所有的IDLIDL設(shè)備都支持設(shè)備都支持2424位顯示模式位顯示模式 真彩色模式真彩色模式 每個像素的顏色由紅、綠、藍各自的強度混合而成每個像素的顏色由紅、綠、藍各自的強度混合而成 支持支持1677721616777216色色 不需顏色表不需顏色表3 3、圖形窗口、圖形窗口 當選擇的圖形設(shè)備為當選擇的圖形設(shè)備為WINWIN、MACMAC或或

40、X X時,圖形結(jié)果將直接時,圖形結(jié)果將直接輸出到計算機顯示器的一個窗口中。如果圖形窗口不輸出到計算機顯示器的一個窗口中。如果圖形窗口不存在,則第一個圖形或圖形顯示命令將自動打開一個存在,則第一個圖形或圖形顯示命令將自動打開一個新的圖形窗口。新的圖形窗口。 與圖形窗口操作有關(guān)的過程與圖形窗口操作有關(guān)的過程 Window Window 創(chuàng)建一個新的窗口創(chuàng)建一個新的窗口 WsetWset 將一個存在的窗口變?yōu)楫斍按翱趯⒁粋€存在的窗口變?yōu)楫斍按翱?WshowWshow 顯示、隱藏存在的窗口顯示、隱藏存在的窗口 Erase Erase 擦除存在窗口中的內(nèi)容擦除存在窗口中的內(nèi)容 WdeleteWdelet

41、e 刪除一個存在的窗口刪除一個存在的窗口窗口創(chuàng)建的示例程序窗口創(chuàng)建的示例程序:BROWNIAN.pro:BROWNIAN.pro4 4、坐標系統(tǒng)、坐標系統(tǒng) IDLIDL提供了三種獨立的坐標系統(tǒng):數(shù)據(jù)坐標系統(tǒng)、設(shè)備提供了三種獨立的坐標系統(tǒng):數(shù)據(jù)坐標系統(tǒng)、設(shè)備坐標系統(tǒng)和正交坐標系統(tǒng)。坐標系統(tǒng)決定著圖像如何坐標系統(tǒng)和正交坐標系統(tǒng)。坐標系統(tǒng)決定著圖像如何顯示以及顯示在窗口的位置。用戶可以選用三種坐標顯示以及顯示在窗口的位置。用戶可以選用三種坐標系統(tǒng)的一種作為默認坐標系統(tǒng),也可以在應(yīng)用系統(tǒng)中系統(tǒng)的一種作為默認坐標系統(tǒng),也可以在應(yīng)用系統(tǒng)中同時使用多種坐標系統(tǒng)。同時使用多種坐標系統(tǒng)。 數(shù)據(jù)坐標系統(tǒng):是指與通

42、常的數(shù)據(jù)范圍相同的窗口坐數(shù)據(jù)坐標系統(tǒng):是指與通常的數(shù)據(jù)范圍相同的窗口坐標系統(tǒng)。該系統(tǒng)可以有二維的或者三維的,也可以是標系統(tǒng)。該系統(tǒng)可以有二維的或者三維的,也可以是線型的、對數(shù)的、或者半對數(shù)的。該坐標系統(tǒng)是系統(tǒng)線型的、對數(shù)的、或者半對數(shù)的。該坐標系統(tǒng)是系統(tǒng)默認的坐標系統(tǒng)。默認的坐標系統(tǒng)。設(shè)備坐標系統(tǒng):是選定設(shè)備的實際坐標系統(tǒng)。設(shè)備坐標是整數(shù),設(shè)備坐標系統(tǒng):是選定設(shè)備的實際坐標系統(tǒng)。設(shè)備坐標是整數(shù),范圍從顯示窗口的左下角(范圍從顯示窗口的左下角(0 0,0 0),到右上角(),到右上角(VxVx -1 -1,VyVy -1 -1)。)。VxVx和和VyVy是設(shè)備是設(shè)備( (例如顯示窗口例如顯示窗口

43、) )的列序號和行序號。注意:對于圖的列序號和行序號。注意:對于圖像,數(shù)據(jù)坐標與設(shè)備坐標一樣。圖像的設(shè)備坐標與圖像內(nèi)的像素像,數(shù)據(jù)坐標與設(shè)備坐標一樣。圖像的設(shè)備坐標與圖像內(nèi)的像素位置直接相關(guān)。位置直接相關(guān)。歸一坐標系統(tǒng):當前圖形窗口或設(shè)備的左下角坐標為(歸一坐標系統(tǒng):當前圖形窗口或設(shè)備的左下角坐標為(0.00.0,0.00.0),右上角的坐標為(),右上角的坐標為(1.01.0,1.01.0)。普通坐標非常有用,用戶)。普通坐標非常有用,用戶使用普通坐標指定不依賴于當前圖形窗口或設(shè)備大小和形狀的位使用普通坐標指定不依賴于當前圖形窗口或設(shè)備大小和形狀的位置。置。坐標的轉(zhuǎn)換坐標的轉(zhuǎn)換 使用使用co

44、nvert_coordconvert_coord可以在數(shù)據(jù)、普通和設(shè)備坐標之間轉(zhuǎn)換??梢栽跀?shù)據(jù)、普通和設(shè)備坐標之間轉(zhuǎn)換。 result=convert_coord(x,y,/to_coordinateresult=convert_coord(x,y,/to_coordinate) )5 5、顏色表、顏色表 載入載入IDLIDL內(nèi)置的顏色表內(nèi)置的顏色表 LOADCT,1LOADCT,1 IDL IDL內(nèi)置了內(nèi)置了4141中顏色表中顏色表使用圖形界面交互選擇顏色表使用圖形界面交互選擇顏色表 XLOADCTXLOADCT交互式修改顏色表交互式修改顏色表 XPALETTEXPALETTE在程序中修改顏

45、色表在程序中修改顏色表 TvLCTTvLCT直接圖形法例子:直接圖形法例子: 模擬布朗運動模擬布朗運動 模擬霓虹燈效果模擬霓虹燈效果地圖投影地圖投影 Map_SetMap_Set 程序進行投影設(shè)置程序進行投影設(shè)置支持支持1818種投影種投影 Map_gridMap_grid Map_continentsMap_continents Map_imageMap_imageIDLIDL對象圖形系統(tǒng)對象圖形系統(tǒng) 對象圖形系統(tǒng)是由窗口對象(對象圖形系統(tǒng)是由窗口對象(WindowWindow)、場景對象、)、場景對象、視圖組對象、視圖對象、模式對象和基本圖元對象組視圖組對象、視圖對象、模式對象和基本圖元對

46、象組成。它們的層次關(guān)系為:場景對象(成。它們的層次關(guān)系為:場景對象(SceneScene)是由一個)是由一個或者多個視圖組對象(或者多個視圖組對象(ViewgroupViewgroup)組成;視圖組對象)組成;視圖組對象(ViewgroupViewgroup)是由一個或者多個視圖對象()是由一個或者多個視圖對象(ViewView)組)組成;視圖對象(成;視圖對象(ViewView)是由一個或者多個模式對象)是由一個或者多個模式對象(ModelsModels)組成;模式對象()組成;模式對象(ModelsModels)是由一個或者)是由一個或者多個基本圖元對象組成(多個基本圖元對象組成(Atom

47、ic Graphic ObjectAtomic Graphic Object););基本圖元對象是由基本圖元對象是由IDLgrAxisIDLgrAxis、IDLgrContourIDLgrContour、IDLgrImageIDLgrImage、IDLgrLightIDLgrLight、IDLgrPlotIDLgrPlot、IDLgrPolygonIDLgrPolygon、IDLgrPolylineIDLgrPolyline、IDLgrSurfaceIDLgrSurface、IDLgrTextIDLgrText和和IDLgrVolumeIDLgrVolume等利用等利用OBJ_NEWOBJ_N

48、EW函數(shù)創(chuàng)建;最后把最終的函數(shù)創(chuàng)建;最后把最終的場景再在窗口對象中顯示。場景再在窗口對象中顯示。對象圖形系統(tǒng)中各種對象的創(chuàng)建過程可以描述如下:對象圖形系統(tǒng)中各種對象的創(chuàng)建過程可以描述如下:(1 1)由窗口類)由窗口類IDLgrWindowIDLgrWindow創(chuàng)建窗口對象。創(chuàng)建窗口對象。(2 2)由場景類)由場景類IDLgrSceneIDLgrScene創(chuàng)建場景對象。創(chuàng)建場景對象。(3 3)由視圖組類)由視圖組類IDLgrViewgroupIDLgrViewgroup創(chuàng)建視圖組對象。創(chuàng)建視圖組對象。(4 4)由視圖類)由視圖類IDLgrViewIDLgrView創(chuàng)建視圖對象。創(chuàng)建視圖對象。(5 5)由模式類)由模式類IDLgrModelIDLgrModel創(chuàng)建模式對象。創(chuàng)建模式對象。(6 6)由基本圖元類創(chuàng)建基本圖元對象。)由基本圖元類創(chuàng)建基本圖元對象。(7 7)利用模式對象

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論