




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序的效率问题,在大数据或复杂运算的时候是不能忽略的。但在IDL程序的编写方式上,不能按照常规的循环for依次处理方式写,简单归纳下,提高效率的运行的写法注意下面两种方式。1、尽量避免或少用循环2、多用 where 和 Histogram ;说起来很容易,但实际写的时候一定要多斟酌斟酌。举例1:对2000*2000的数组中大于100的值进行累加。PROTEST TIMEDIST ( 2000 , 2000 )sum =0.sum1 =0.start =SYSTIME ( 1)7 / 5FOR i=0L, N_ELEMENTS(a)- 1L DOBEGINIF (ai GT 100.0 ) TH
2、EN BEGINsum = sum +aiENDIFENDFORfortime =SYSTIME ( 1 )-startPRINT , for time:fortimei= 0Lstart =SYSTIME ( 1)WHILE iLTN_ELEMENTS (a)- 1L DO BEGINIF (aiGT 100.0 ) THEN sum = sum +aii+ENDWHILEwhiletime =SYSTIME ( 1 )-startPRINT ,while time:,whiletimestart =SYSTIME ( 1)sum =TOTAL (a * (a GT 100.0 )fun t
3、ime =SYSTIME ( 1 )-startPRINT ,fun cti on time:,fun time;倍数print,result for VS function:,fortime/fu ntimeprint,result while VS function:,whiletime/fu ntimeEND运行后的输出IDL test time % Com piled module: TEST_TIME.for time:1.4510000while time:2.0430000 fun ctio n time: 0.054000139result for VS fun ctio n:
4、26.870301result while VS fun ctio n:37.833235看到差别了吧,循环比函数直接运算慢至少一个数量级!举例2:对一个图像中的特定值,若存在,则以该像素为中心,特定半径内的元素统一修改 为某值。以IDL自带的一个图像为例,将数据值等于142的赋为0.源码如下:SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS;计算两个点的距离fun cti onCalDista nee, poin t1, point2comp ile_ opt idl2Return , SQRT(point10-point20)人 2+(point11-point21
5、)人 2) endSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS;搜索当前坐标周围Distanee内的下标,注意输入x和y方向的坐标范围 xRange 和yRangefun cti oncalldxl nDista nee,curLoc, dista nee;,xRa ngeyRa nge;初始化临时下标suitLoc =0, 0;循环一次,计算矩形范围内的符合要求下标for xLoc = curLoc0-dista nee, curLoc0+dista needo beginfor yLoc = curLoc1 -dista nee, curLoc1 +dista
6、needo beginif calDista nee(curLoc, xLocyLoc)LE distaneethen suitLoc =suitLoc,xLoc,yLocen dforendretur n, suitLoc*,1:( N_Elements(suitLoc)/2-1)endssssssssssssssssssssssssssssssssssss;测试即调用主函数 pro test_processfile =;原数据FILE PATH ( rbcells.j pgSUBDIRECTORY =exa mp les,data)READ_JPEG , file, dataif size
7、 (data,/n_dimensions)ne 2 thenreturndims = size (data,/dimension)startTime =systime ( 1);当值等于142时,半径5内的元素赋值为 0eqValue =142rep Value =;符合要求的坐标suitIdx =calIdx In Dista nee(0, 0,5);新数据n Data = dataidxs = where (dataeq eqValue,count)for curIdx =0 ,cou nt-1 do beginn Suit = suitIdxsuitLoc =;转换为二维坐标ARRAY_
8、INDICES (data, idxscurIdx)nSuit0 ,*= n Suit0,*+suitLoc0n Suit1 ,*= n Suit1 ,*+suitLoc1;下标要在数组自身范围内nSuit0,* = dims0 n Suit1 ,* = dims1 ;符合要求的位置赋值n Data nSuit0,* ,n Suit1 ,* = rep Valueen dfor;输岀花费时间 print , systime ( 1) - startTime;常规的循环写法ns = dims0nl = dims1new = datan ew1 = datastartTime =systime (
9、1)for i= 0,ns-do beg infor j= 0,nl-1 do beg inifn ewi,jeq eqValuethe n beg infor m=0,ns- 1do beginfor n=0,nl-1 do beg inif (m-i*1L)A 2+(n-j*1L)A 2 le25then n ew1 m,n=0en dforen dforen difen dforen dforprint , common time:,systime ( 1) - startTimewindow , 1 ,xSize = dims0* 2,ySize = dims1tvscl ,Data, 0tvscl,n data,1window , 2,xSize = dims0* 2,ySize = dims1tvscl ,n ew, 0tvscl,n ew1, 1I en
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑安全教育考试题库及答案
- 2025年建筑垃圾处理方案范文(四)
- 四川应急灯项目可行性研究报告参考模板
- 2025年矿业投资可行性研究报告模板
- 2025年上海高考物理试卷真题及答案解析考后更新
- 钢结构厂房拆除施工方案
- 2025年年产30万台自行车标准台配件建设项目可行性报告
- 2025年用电服务知识考试题库及答案
- 委托内部审计服务合同协议书6篇
- 2025年二级企业人力资源管理师考试(理论知识)经典试题及答案一
- DB11∕T 1010-2019 信息化项目软件开发费用测算规范
- 生物安全知识培训
- 卫星通讯基础知识
- 新龙县介绍模板
- 2025-2026学年人教版(2024)初中体育与健康八年级全一册《兴趣伴成长》教学设计
- 2025年题库红色知识竞赛题库全集及参考答案
- 幼儿园中班语言《恐龙妈妈藏蛋》课件
- 规范垂直大模型质量验收规程
- 2025年旌德县事业单位引进急需紧缺专业人才30人笔试备考试题及答案解析
- 2025年6月上海市高考语文试题卷(含答案详解)
- 2022室外排水设施设计与施工-钢筋混凝土化粪池22S702
评论
0/150
提交评论