IDL语言基础
因為影像處理過程的需要,還是需要學(xué)習(xí)一些IDL語言,以便在ENVI中對圖像進行批量的操作。這里就不定期的更新一些心得和小段吧。
第一本書《遙感二次開發(fā)語言IDL》 徐永明編著,科學(xué)出版社,2014年6月第一版
2018.07.08
(1)IDL語言不區(qū)分大小寫
(2)IDL中分號“;”表示注釋
(3)“$”表示續(xù)行符
(4)一行可以寫多條IDL語句,使用“&”連接
(5)IDL行文風(fēng)格類似pascal
(6)數(shù)據(jù)類型與c類似,變量使用與MATLAB類似,不需要事先聲明,不需要指定類型,隨時可以改變數(shù)據(jù)類型和維數(shù),字符串操作類似C#
(7)IDL->help,variable,可以顯示變量的名稱、類型和值
(8)數(shù)組元素按照列優(yōu)先順序存儲,下標從0開始
IDL> arr=make_array(rows,cols,/type) IDL>arr=make_array(3,2,/byte,/index) ;創(chuàng)建索引數(shù)組,數(shù)組值為其下標值 IDL>print,arr IDL>arr=intarr(6) ;創(chuàng)建int型零數(shù)組 IDL>arr=indgen(6) ;創(chuàng)建int型索引數(shù)組 CSDN的顯示有問題,“>“被顯示成“&”(9)數(shù)組操作函數(shù)
IDL>arr=findgen(3,4) IDL>print,n_elements(arr);數(shù)組元素數(shù)量 IDL>print,size(arr);數(shù)組大小 ;返回n+3個元素(n為數(shù)組維數(shù)),分別是 ;1數(shù)組維數(shù) 2~n+1每一維的大小 n+2數(shù)據(jù)類型 n+3數(shù)組元素數(shù)目 IDL>print,max(arr),min(arr) IDL>print,max(arr,dimension=1);求每一行的最大值 IDL>print,max(arr,dimension=2);求每一列的最大值 IDL>max_w=max(arr,index) IDL>print,max_w,index;可以返回下標 IDL>mean\variance\stddev\total(arr);均值、方差、標準差、求和 IDL>reform\transpose\sort(arr);數(shù)組改變形狀、轉(zhuǎn)置、升序排序(10)關(guān)系與邏輯運算符:EQ-等于,NE-不等于,GT(大于)LT(小于),GE(大于等于),LE(下雨等于)
????????? ? &&與,||或,~非
(11)可以使用指針
IDL>p1=ptr_new(a);指向變量的指針 IDL>p2=ptr_new();未指向變量的指針 IDL>c=*p1;對指針的提取 IDL>ptr_free,p1,p2;指針的釋放 IDL>ptr_valid(p);驗證指針的有效性,有效為真 IDL>ptr_arr=ptrarr(2);指針數(shù)據(jù) (12)過程和函數(shù);過程 pro pro_name,pro_para語句 end;函數(shù) function func_name,func_para語句return,result end
(13)控制語句
;if語句 if-endif else-endelse成對出現(xiàn) if 條件 then 語句 if 條件 then begin語句 endifif 條件 then 語句1 else 語句2if 條件then begin語句 endif else begin語句 endelse ;case 語句 , switch 語句結(jié)構(gòu)相同 case 條件\變量\表達式 of表達式1: 語句表達式2: begin語句endelse : 語句 endcase(14)循環(huán)語句
;for語句 for i=1,n(,buchang) do begin語句 endfor;while語句 while 條件 do begin語句 endwhile;repeat語句 repeat begin語句 endrep until 條件2018.07.13
補充字符串的操作
(1)創(chuàng)建字符串,用單引號或者雙引號括起來即可。字符串連接可使用“+”
①result=strjoin(string_arr[, delimiter])把字符串?dāng)?shù)組連接成一個字符串,delimiter為連接字符,形式如' ',' - '等
(2)字符串操作函數(shù)
IDL>result=strlen(string) ;字符串長度 IDL>result=strlowcase/strupcase(string) ;字符串大小寫轉(zhuǎn)換 IDL>result=strcompress(string[/remove_all]) ;壓縮空格,如有remove_all則刪去所有空格,沒有則將連續(xù)的空格用一個空格代替 IDL>result=strcmp(str1,str2,[,n],[,/fold_case]);比較字符串是否相同,n為比較位數(shù),加上/fold_case則無視大小寫區(qū)別 result=strpos(expression,search_string);查找search_string在expression中的位置,如有返回起始位置,如無返回-1 result=strmid*string,pos,[,length]);截取子串,pos為起始位置,length為長度總結(jié)
- 上一篇: WLAN消失,怎么办?
- 下一篇: simhash 介绍以及应用场景