



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、程序的效率問題,在大數(shù)據(jù)或復雜運算的時候是不能忽略的。但在IDL程序的編寫方式上,不能按照常規(guī)的循環(huán) for依次處理方式寫,簡單歸納下,提高效率的運行的寫法注意下 面兩種方式。1、盡量避免或少用循環(huán)2、多用 where 和 Histogram;說起來很容易,但實際寫的時候一定要多斟酌斟酌。 舉例1:對2000*2000的數(shù)組中大于100的值進行累加。 PRO TEST_TIME ;a = DIST ( 2000 , 2000 ) sum =0.sum1 =0.start = SYSTIME ( 1) FOR i= 0L , N_ELEMENTS (a)- 1L DO BEGIN IF (ai
2、GT 100.0 ) THEN BEGIN sum = sum +aiENDIF ENDFOR fortime = SYSTIME ( 1 )-start PRINT , for time: fortime i= 0L start = SYSTIME ( 1) WHILE i LT N_ELEMENTS (a)- 1L DO BEGINIF (ai GT 100.0 ) THEN sum = sum +ai i+ ENDWHILE whiletime = SYSTIME ( 1 )-start PRINT , while time: ,whiletime start = SYSTIME ( 1
3、) sum = TOTAL (a * (a GT 100.0 ) funtime = SYSTIME ( 1 )-start PRINT , function time:,funtime;倍數(shù) print , result for VS function:, fortime/funtimeprint , result while VS function:,whiletime/funtimeEND 運行后的輸出 IDL test_time % Compiled module: TEST_TIME. for time: 1.4510000 while time: 2.0430000 functio
4、n time: 0.0 result for VS function: 26.870301 result while VS function: 37.833235看到差別了吧,循環(huán)比函數(shù)直接運算慢至少一個數(shù)量級!舉例2:對一個圖像中的特定值,若存在,則以該像素為中心,特定半徑內的元素統(tǒng)一修改 為某值。以IDL自帶的一個圖像為例,將數(shù)據(jù)值等于142的賦為0.源碼如下::;;計算兩個點的距離;function CalDistance , pointl, point2compile_optidl2Return , SQRT(point1end;0-point20)A 2+(point1 1 -poi
5、nt21)A 2)搜索當前坐標周圍 Distance 內的下標,注意輸入 x和y方向的坐標范圍xRange和yRangefunctioncalldxInDistance,curLoc, distance;,xRange,yRange;初始化臨時下標suitLoc = 0, 0;循環(huán)一次,計算矩形范圍內的符合要求下標for xLoc = curLoc 0-distance, curLoc0+distance do beginfor yLoc = curLoc1 -distance, curLoc1 +distancedo beginif calDistance (curLoc, xLoc,yLo
6、c)LE distance then suitLoc =suitLoc,xLoc,yLoc endfor end ; return , suitLoc*, 1:( N_Elements (suitLoc)/ 2-1) end ; ; ;測試即調用主函數(shù) pro test_process ;原數(shù)據(jù) file = FILEPATH ( rbcells.jpg , $ SUBDIRECTORY = examples , data) READ_JPEG , file, data ; if size (data,/n_dimensions)ne 2 then returndims =size (data
7、,/dimension)startTime =systime(1);當值等于142時,半徑5內的元素賦值為0eqValue =142repValue = i;符合要求的坐標suitIdx =calldxInDistance(0, 0, 5);新數(shù)據(jù)nData = dataidxs =where (data eq eqValue,count)for curldx =0 ,count- 1 do beginnSuit = suitIdxsuitLoc =ARRAY_INDICES (data, idxscurIdx)nSuit0,*= nSuit0 ,*+suitLoc0nSuit1 ,*= nS
8、uit;下標要在數(shù)組自身范圍內1 ,*+suitLoc1nSuit0 ,* = dims0 nSuit1 ,* = dims;符合要求的位置賦值1 000,*,nSuit1 ,* = repValue;轉換為二維坐標nDatanSuit endfor;輸出花費時間 print , systime;常規(guī)的循環(huán)寫法(1) - startTimens = dims nl = dims01new = datanew1 = datastartTime =for i= 0 ,ns-systime ( 1)1 do beginfor j= 0 ,nl- if newi,j1 doeqfor m= 0,ns- 1begineqValue then begin do beginfor n= 0,nl-if (m-i*endfor1 do begin1L2+(n-j*1L)A 2 le25then new1m,n= 0endforendifendforendfor1print , common time: window , 1 ,xSize = dims tvscl ,Data, 0,systime (1) - startTime 0* 2,ySize = dims0* 2,ySize = dims1tvscl ,ndata, 1window , 2 ,xSi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024人工智能網(wǎng)絡安全
- 反違章施工方案
- 保潔外墻清潔合同范例
- 合作收購小麥合同范本
- 涼茶加盟合同范例
- 農村開店合同范例
- ktv啤酒供貨合同范例
- 新生代保安人員的職業(yè)發(fā)展情況計劃
- 保險公司安全風險評估與處理方案計劃
- 財務數(shù)據(jù)分析與會計決策支持計劃
- 商鋪租賃合同(有利于承租方)
- 異丁烷脫氫項目可行性研究報告
- 廣東外語外貿大學會計專碩復試
- 行政處罰案件集體討論審理記錄
- 變電站綜合自動化
- 德語現(xiàn)代主義文學-浙江大學中國大學mooc課后章節(jié)答案期末考試題庫2023年
- 2022年安徽省公務員錄用考試《行測》真題及答案
- 2023年高中音樂課件大宅門-電視劇《大宅門》主題歌
- 國際貿易地理全套課件
- 內科學支氣管擴張癥(課件)
- 部編人教版五年級道德與法治下冊全冊完整課件ppt
評論
0/150
提交評論