IDL语言基础及程序设计Word格式文档下载.docx

上传人:b****4 文档编号:8297251 上传时间:2023-05-10 格式:DOCX 页数:49 大小:387.58KB
下载 相关 举报
IDL语言基础及程序设计Word格式文档下载.docx_第1页
第1页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第2页
第2页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第3页
第3页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第4页
第4页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第5页
第5页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第6页
第6页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第7页
第7页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第8页
第8页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第9页
第9页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第10页
第10页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第11页
第11页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第12页
第12页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第13页
第13页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第14页
第14页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第15页
第15页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第16页
第16页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第17页
第17页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第18页
第18页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第19页
第19页 / 共49页
IDL语言基础及程序设计Word格式文档下载.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

IDL语言基础及程序设计Word格式文档下载.docx

《IDL语言基础及程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《IDL语言基础及程序设计Word格式文档下载.docx(49页珍藏版)》请在冰点文库上搜索。

IDL语言基础及程序设计Word格式文档下载.docx

z实验室

z测试技术

z天文

z信号处理

z防御工程

z数学分析

z统计

基于IDL的系列产品

IDL-InteractiveDataLanguage

ION-IDLOntheNet

VIP-VisualIDLProgramming

ENVI-EnvironmentforVisualizingimages

RiverTools-Analysisfordigitalterrainandrivernetworkmodeling

NOESYS-Organize,visualize&

shareHDFdata

IDL语法基础

z变量设定

•标量scalar

•数组array(1-8维)

•结构变量structure

zIDL命令解析

•命令格式

•命令参数

•命令日志

1.变量及其属性

z变量无须事先声明

z变量名必须以字母开头,可包括数字、下划线、美元符号。

最长可达255个字符

z动态改变变量的属性

z变量的大小取决于计算机配置和操作系统

2.基本数据类型

数据类型

字节

值域

创建

类型函数

1

0~255

0B

byte()

16位有符号整型

2

-32,768~32,767

fix()

32位有符号整型

4

0L

long()

64位有符号整型

8

0LL

long64()

16位无符号整型

0~65535

0U

uint()

32位无符号整型

0~2^32-1

0UL

ulong()

64位无符号整型

0~2^64-1

0ULL

ulong64()

浮点型

±

10^38

0.0

float()

双精度浮点型

0.0D

double()

复数

complex(0.0,0.0)

complex()

双精度复数

16

complex(0.0D,0.0D)

dcomplex()

字符串

0~32767

‘’或“”

string()

指针

ptr_new()

-

对象

obj_new()

注意IDL中整型变量为其他编程语言中的短整型,“L”表示为长整型

3.数组

IDL是面向矩阵的语言,几乎所有运算都可以在数组上使用。

数组表达:

array[n,m]表示n列m行(与其他语言有别),按行排列,0为下标起点数组引用:

array[subscript],或(array)[subscript]下标语法:

e、e0:

e1、e:

*、*、array。

array=make_array(10,10,/integer),sub=indgen(12)合法的下标表示:

array[5,5]、array[2:

3,5]、array[*,4]、array[*,5:

8]、array[4,4:

*]、array[sub]、A[[1,3,5],7:

9]

reform():

array[4,4:

*]为1列4行(列向量),reform(array[4,4:

*])则为4列1行(行向量)常数的数组表示:

var=5,则var[0]=5(合法!

赋值:

array[[2,4,6],5]=[4,16,36]where():

array[where(arraylt0)]=-999数学运算:

与普通变量基本相同。

*和/:

表示两个同维数数组对应元素运算

arr1=indgen(5)+1,arr2=arr1。

则:

arr1*arr2=[1,4,9,16,25],arr1/arr2=[1,1,1,1]

#和##:

矩阵运算arr1(n1,m)#arr2(m,n2)=arr(n1,n2),

arr1(n,m1)##arr2(m2,n)=arr(m2,m1)

数组串连:

arr1(5,6),arr2(5,2)。

arr3=[[arr1],[arr2]]为(5,8)

注意:

arr3=[arr1,arr2]不合法!

(一维除外)

4.数组常用函数

初始化函数

产生索引值函数创建

bytarr

bindgen

intarr

indgen

lonarr

lindgen

lon64arr

l64indgen

uintarr

uindgen

ulonarr

ulindgen

ulon64arr

ul64indgen

fltarr

findgen

dblarr

dindgen

complexarr

cindgen

dcomplexarr

dcindgen

strarr

slindgen

ptrarr

objarr

5.结构变量

结构变量是一种复合变量,它可以将多种类型的数据存储在一个变量中,

✆类型及定义

命名结构:

dot={PIXEL,x:

128,y:

236,color:

bytarr(3)},定义后可使用FIXEL定义其他结构

dot1={PIXEL,x:

58,y:

46,color:

[255,0,255]}、

dot2={PIXEL,58,46,[255,0,255]}、dot3={PIXEL}

匿名结构:

person={name:

’jack’,id:

123456L},定义后无固定结构,可任意改变

123456L,phone:

’123-4567’}

✆引用

变量引用:

使用变量名或变量在结构中的位置索引。

如:

dot.x或dot.(0)

数组变量:

s={arr:

indgen(10)},则s.arr=10将数组所有元素赋值为10。

✆结构数组

定义:

dotarr=replicate({PIXEL},10),或dotarr=replicate(dot,10)

引用:

dotarr[1].x=10、dotarr.x=10将所有结构的x赋值为10、dotarr.y=indgen(10)

✆结构中的变量的类型和(数组)大小

结构定义后,各变量的数据类型以及数组变量的维数均不可改变。

当使用中出现不一致时向原类型转换,不能转换时报错。

var=dot.x*1.0=128.0,为浮点,而dot.x=dot仍为整型。

s.arr=-indgen(8)会改变s.arr中前8个元素的值,而s.arr=-indgen(11)会出错。

✆结构继承

dot3d={POINT,INHERITSPIXEL,z:

0}

✆常用函数creat_struct()、n_tags()、tag_names()、struct_assign()

6.指针变量

IDL的指针与其他语言的指针有很大的不同,它不是指向存储的地址而仅仅是一个轻型的指向一个堆变量的引用(指针变量)。

堆变量可以动态分配(数据类型和数组维数),这意味着传递指针变量就相当于传递动态数据。

PointerReference

PointerinHeapVariables

•标量

•数组

•结构

PointerData

指针基本操作

创建:

ptr=ptr_new([initexpr][,/allocate_heap][,/no_copy])

释放:

ptr_free,ptr

7.指针基本命令

✆标量指针创建:

v=5.5,p=ptr_new(v)

print,p,*p;

p1=p,*p1=20,print,*p

✆数组指针

arr=findgen(10),p=ptr_new(arr)

print,(*p)[5]

✆结构指针

s={name:

’joe’,age:

40,height:

180},p=ptr_new(s)

print,(*p).name

✆结构内指针

rec={lon:

120,lat:

20,data:

ptr_new(findgen(2,10))},p=ptr_new(rec)

*(*p).data=findgen(2,20)

✆特殊指针

Null指针:

nptr=ptr_new(),仅定义一个指针,并不指向一个堆变量。

引用时需重新定义指针。

Empty指针:

eptr=ptr_new(/allocate_heap),定义一个指向一个堆变量的指针,但并未定义变量,引用时可以直接定义变量

✆指针释放

✆相关函数

ptr_valid():

ptr_valid(nptr)=0,ptr_valid(eptr)=1

heap_gc:

释放没有引用的堆变量

✆指针数组

ptrarr(d1,...,d8[,/allocate_heap])

1.命令格式

——宽松的语法检查机制

•分隔符为“,”,而非空格

•不分大小写

•$为续行符

•;

后面是注释

A=dist(100)Zvalue=0.5

Tvscl,aContour,a,nlevels=10

Shade_surf,aContour,a,nlevels=10,$,/follow

2.命令参数

z位置参数:

在命令名右边,有严格的顺序限制。

通常用于必选参数。

例如:

Contour,peak,lon,lat…

错误:

Contour,lon,peak,lat…

z关键字参数:

关键字参数与位置无关,且可以与位置参数混合位置。

通常放在位置参数之后,用于可选参数。

Contour,peak,levels=vals,lon,/follow,lat,...

命令帮助:

IDL>

?

3.命令日志

将在命令行里面输入的命令保存为日志或记录,该文件以pro格式保存,可作为一个IDL批处理文件

例如,创建日志文件commands.proIDL>

Journal,‘commands’关闭日志文件

Journal

IDL编程基础

z批处理文件\主程序\过程\函数

z参数传递

z错误处理

z编译与运行

z输入输出

z常用控制语法

1.批处理

z主体:

由一系列IDL命令组成

例如thisfiles=findfile(*.img,count=numfiles)

Print,’numberoffilesfound:

’,numfiles

….

z运行方式:

以IDL>

@batchfile方式运行。

z编译:

批处理文件运行时并不编译,因此使用控制结构时必须大量使用续行符($),给书写、理解造成困难。

2.主程序

与批处理相似,但必须以end结束,有两种表现形式

(1)…

end

(2)protest

程序体

文件名为test.pro,没有名称的主程序必须放在程序最后面。

.runprofile方式运行。

主程序运行时先编译,因此可以正常使用控制结构。

源代码编译后,直接执行与文件名同名的主程序

3.过程

与主程序相似,但必须以proproname

开始,以end结束。

pro过程名称,变量V1,V2,…,k1=k1,k2=k2

keyword起重要作用

proname方式运行

可以先运行IDL>

.compileproname,编译但不运行

4.函数

与过程相似,但以functionfnname开始,以end结束,并以return语句返回一个IDL变量。

Functiontest变量V1,V2,…,

关键字k1=k1,k2=k2

return,Valueend

ret=fnname(para_list)方式运行。

5.注意事项

z在IDL系统中,一个过程或函数即为一个新的

IDL命令。

z变量作用范围:

批处理和主程序方式的变量为全局变量,可以在IDL开发环境中使用。

过程和函数的变量为局部变量,只在过程和函数运行过程中有效。

参数传递

位置参数:

在参数列表中按位置列出参数名,严格的顺序限制。

通常用于必选参数。

定义:

probatch,para1,para2,...

调用:

IDL->

batch,para1,para2,…

关键字参数:

关键字参数与位置无关,且可以与位置参数混合位置。

通常放在位置参数之后,用于可选参数。

probatch,keywordname=keywordsymbol,...

batch,keywordname=keywordsymbol,…

batch,/keywordname

keywordname用于定义,keywordsymbol用于调用。

引用传递和值传递:

所有变量为引用传递,其值会被修改。

系统变量、下标变量、表达式和常量均为值传递,原变量的值不被修改。

参数传递了吗?

传递了什么?

n_params():

返回位置参数的个数

keyword_set():

关键字参数为不为0常量或已定义的引用传递时返回1,否则返回0

arg_present():

关键字参数为引用传递时返回1(无论是否定义),否则返回0

n_elements():

关键字参数未传递或未定义返回0,否则返回非0数

错误处理

on_ioerror:

当出现I/O错误时,跳转指定的语句。

两种用途:

跳过错误返回或跳过错误继续。

使用on_ioerror,null

on_error:

当程序运行出错时,并不执行一个新的语句,而是指明IDL应该怎样做。

行动

立即停止。

缺省

立即停止,返回主程序

立即停止,返回程序调用模块

3

立即停止,返回程序模块

可以设置on_error,1,或在命令行使用retall

catch:

格式:

catch,error_var。

当程序执行到catch语句时,IDL为该模块记录一个

错误处理语句,并将error_var赋值为0。

若程序执行出错,则给error_var赋值相应的错误

码,然后跳转到catch后第一条语句。

使用catch,/cancel

IDL出错处理示意

ErrororExceptionisGenerated

IsitanI/Oerror?

No

IsthereanerrorhandlerdefinedbytheCATCHroutine?

Yes

HandleerrorwithCATCH-definederrorhandlerandcontinueprogramexecution.

IsON_IOERROR

routineinuse?

Handleerrorasindicatedby

settingofON_ERRORroutineorusedefaulterrorhandling.

ON_IOERRORsetting.

编译与运行

批处理:

@bacthfile,运行主程序:

.run,编译、运行

过程和函数:

.compile,编译;

->

proname,编译、运行。

编译规则:

(1)编译到主程序后,编译停止

(2)编译到与文件同名的程序模块时,停止编译

(3)编译到文件末尾或适合其他规则时,停止编译

自动编译规则:

当过程或函数出现在命令或代码中时,会自动被编译执行。

(1)过程或函数所在的文件应在当前工作路径和!

Path指定的路径中

(2)过程或函数名与文件名相同

编译函数:

resolve_routine、resove_all。

可用于程序模块中。

.sav:

save,编译后存储为.sav文件,便于发布。

但版本间不兼容。

1.常用概念

z文件操作:

openr,openw,openu,close

z逻辑设备号:

1~99,直接使用

100~128,使用get_lun获取,free_lun释放

z常用函数:

dialog_pickfile,findfile,filepath

2.文本格式

自由格式:

readf,printf,strsplitreadf中只接收变量引用,不接收值引用format语法:

format=‘()’,括号内为格式符及其组合A:

[n]a[w],n为重复次数,w为输出宽度I:

[n]i[w]或[n]I[w.m],缺省w=7,特殊用法:

i0

F:

[n]f[w.d],缺省w=15

X:

[n]X,空格

/:

换行符

:

其后的格式不用于最后一项。

如每个输出项后加一个‘,’时,最后一项不加。

C:

c(),表示日期,接受julian日期。

有丰富的子集

3.大型数据文件

z二进制文件的关连变量处理基本命令:

readu,writeu关联变量:

大型重复单元二进制文件的有效读取手段,可以随机读取。

一个文件可建立多个关联,解决重复单元不一致的情况。

assoc():

result=assoc(unit,array_structure[,offset]

[,/packed])

4.常用格式

(1)

z

ASCII_TEMPLATE

PresentsaGUIthatgeneratesatemplatedefininganASCIIfileformat

ASSOC

Associatesanarraystructurewithafile

BINARY_TEMPLATE

PresentsaGUIforinteractivelygeneratingatemplatestructureforusewithREAD_BINARY

CDFRoutines

CommonDataFormatroutines

EOSRoutines

HDF-EOS(HierarchicalDataFormat-EarthObservingSystem)routines

HDF_BROWSER

OpensGUItoviewcontentsofHDF,HDF-EOS,orNetCDFfile

HDF_READ

ExtractsHDF,HDF-EOS,andNetCDFdataandmetadataintoanoutputstructure

IDLffDICOM

ContainsthedataforoneormoreimagesembeddedinaDICOMpart10file

IDLffDXF

Objectthatcontainsgeometry,connectivity,andattributesforgraphicsprimitives

IDLffShape

Containsgeometry,connectivityandattributesforprimitivesaccessedfromESRIShapefiles

MPEG_OPEN

OpensanMPEGsequence

MPEG_SAVE

SavesanMPEGsequencetoafile

NCDFRoutines

NetworkCommonDataFormatroutines

PRINT/PRINTF

Writesformattedoutputtoscreenorfile

READ/READF

Readsformat

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2