IDL入门学习教程

2022-12-05 17:20:37 浏览数 (1)

IDL介绍——什么是IDL?

Interactive Data I anguage(交互式数据语言) 第四代计算机语言 跨平台应用开发 科学数 据分析 可视化表达

背景

Exelis V isual Information Solut ions ➢1975年, 美国科罗拉多州立大学负责NASA的火星计划中的 影像处理,实现了IDL ➢1994年, 用IDL开发ENVI 2006年,RSI公司重组为ITT Visual Informat ion Solutions (简称ITT VIS) ➢2008年,IDL7. 0发布,全新的基于Eclipse的开发环境; ➢2010年7月,IDL8. 0正式发布,改进的开发环境、强大的可 视化功能、完善的语法结构 ➢2012年,重组为ExelisVis ➢2012年5月,发布了IDL8. 2&ENVI5.0 ➢2013年5月,发布了IDL8. 2. 3&ENVI5.0SP3 …

IDL介绍——IDL的功能组成

IDL特点

丰富的数据输入输出 -常规文件

  • ASCII
  • 二进制
  • 图像

-科学数据格式

  • HDF
  • HDF5
  • NetCDF

-医学影像DICOM

擅长处理矢量或数组 内嵌大量函数 代码量少 运行速度快 算法底层优化

简单易学

高级图像处理能力 图像类型转换 图像几何变换 大小 旋转 纠正 贴图 图像域变换 图像增强和滤波 图像的形态学 图像的识别

支持OpenGL加速 三维图形技术 Shader支持 卷积滤波 色彩补偿 显示补偿 …

IDL入门

资料下载 首先,切换工作空间

1.pro文件

IDL创建一个工作空间,工作空间下可有多个工程文件,一个工程文件里可写多个pro过程,但必须有一个pro过程与工程文件同名关键关键: pro过程保存的文件名必须和程序中所写的pro 后名称一致。否则编译失败,也不可运行。

2.中文乱码情况

如果相关IDL程序是写界面,且界面上包括中文字符,如果运行出现乱码,修改方式: 窗口----首选项----常规----工作空间----文本文件编码, 在这里改成GBK 或者手输 GBK2312

3.添加作者信息(文件、程序注释)

给自己的idl程序加作者信息等:源码----添加文件注释/添加程序注释 修改默认格式:窗口----首选项----IDL----IDLdoc 修改时可添加变量(在下拉栏的最后) eg:我的

代码语言:javascript复制
  ; 
  ; Description:
  ;    Describe the procedure.
  ; Author: ${user}
  ; date: ${date}
  ;-

效果:

4.调试(打断点/逐语句/逐过程)

1.打断点(在程序行前双击),出现下图红点,运行程序会在红点位置暂停

2.逐语句执行程序:IDL界面翻译为‘’ 3.逐过程执行程序:IDL翻译成‘跳出

5.帮助用法(help)

1.在命令行直接输入 ?函数名,会跳转到函数的介绍页面,可查看函数的调用格式以及关键字的使用 2. 鼠标左键选中待查询函数名,点击界面上方 帮助----选中项目帮助

6.变量值

1.在程序运行后,在变量名是哪个悬停,可查看变量值 2.在IDL界面左侧,变量查看器查看,也可在 窗口----变量查看器,进行查看

7.IDL 自带demo

在命令行直接输入demo,回车即可,双击pro文件即可查看运行情况。选中pro文件后,下方可见demo的源码文件

8.换行符

1) $ 示例:

代码语言:javascript复制
IDL> print,$
> 'lizijia'
lizijia
IDL> 
IDL> 'li' string(13B) 'zi'
li
zi

3)字符串数组

代码语言:javascript复制
IDL> a=strarr(2)
IDL> a[0]='li'
IDL> a[1]='hua'
IDL> a
li
hua
IDL> dialog_message(a)

9.大小写

IDL语言是不区分大小写的,但是在作为字符串时,是区分大小写的。

10.编译成可执行程序(.sav或者.exe)

1.编译成 .sav文件 步骤: 1)重置 2)编译

3)命令行输入:

代码语言:javascript复制
save,filename='D:lizijia.sav',/routines

注意:默认软件默认resolve_all 是勾选的,具体可见,工程名,右键,属性----工程构建属性----resolve_all(会把IDL自带的一些程序也编译进去,使用方便)

2.编译成 .exe文件 步骤: 1)重置(也可不重置) 2)编译 3)命令行输入:

代码语言:javascript复制
make_rt,'test','D:idl_test'

test为输出exe的名字,'D:idl_test’为输出路径 注意: a.在得到的exe文件夹里面,可把自己电脑IDL的license文件拷贝进去,这样就不会出现虚拟机的界面, b.在文件.ini 的文件里,吧dialog 字符下面的show=TRUE,改成show=FALSE,就不会出现最前面的click to continue 的界面

11 局部变量和全局变量

idl 中有已经设定好的系统变量,为全局变量,而自己写的变量一般都是局部变量。

那怎么自定义全局变量呢? 1.在命令行中定义系统变量,回车执行后,会在系统变量里找到自己定义的系统变量,(但是并非所有的程序都要用到该变量,所以如果系统变量定义过多,会增加系统内存,不推荐使用)

代码语言:javascript复制
IDL> defsysv,'!li',10
IDL> 

 
 12

2. 定义公共区common

12 pro和function的使用

13. file_nasename()和file_dirname

已知文件绝对路径为: D:cbsgeoreferenced_imgDS1110-1118DF025_rec_geocoding_1s_match.tif

代码语言:javascript复制
IDL> file_basename('D:cbsgeoreferenced_imgDS1110-1118DF025_rec_geocoding_1s_match.tif')
DS1110-1118DF025_rec_geocoding_1s_match.tif
IDL> file_dirname('D:cbsgeoreferenced_imgDS1110-1118DF025_rec_geocoding_1s_match.tif')
D:cbsgeoreferenced_img
ENVI> 

0 人点赞