北大《空间探测信息处理技术(IDL)》第2章数据、变量、表达式

上传人:lizhe****0001 文档编号:55421270 上传时间:2018-09-29 格式:PPT 页数:53 大小:824KB
返回 下载 相关 举报
北大《空间探测信息处理技术(IDL)》第2章数据、变量、表达式_第1页
第1页 / 共53页
北大《空间探测信息处理技术(IDL)》第2章数据、变量、表达式_第2页
第2页 / 共53页
北大《空间探测信息处理技术(IDL)》第2章数据、变量、表达式_第3页
第3页 / 共53页
北大《空间探测信息处理技术(IDL)》第2章数据、变量、表达式_第4页
第4页 / 共53页
北大《空间探测信息处理技术(IDL)》第2章数据、变量、表达式_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《北大《空间探测信息处理技术(IDL)》第2章数据、变量、表达式》由会员分享,可在线阅读,更多相关《北大《空间探测信息处理技术(IDL)》第2章数据、变量、表达式(53页珍藏版)》请在金锄头文库上搜索。

1、空间探测信息处理技术,Interactive Data Language (IDL) 第二章:数据、变量、表达式韩培友,IDL可视化分析与应用 ,西北工业大学出版社,2006年.,数据类型,12种基本数据类型,数据类型,4种组合类型 数组类型(array) 由一个或多个相同类型数据组成一组有序数据集合; 用下标访问具体元素; 一维数组可以称为“矢量”。 结构类型(structure) Type Code: 8 由一个或多个不同同类型数据组成的数据集合; 分为匿名和署名两类。 对象类型(object) Type Code: 11 与结构相似,但包含数据及操作数据的函数,占4字节; 指针类型(po

2、inter) Type Code: 10 存储某类数据的地址,占4字节。,常量,IDL有三种常量:字符型、数值型和逻辑型常量 字符型常量 用单引号或双引号作为定界符定义的字符串,定界符必须成对出现。 “IDL program“ 数学系 “1.13“ “ 数值型常数(整型数、浮点数、复数) 用数字、小数点、指数标识(E或D)、复数标识(i)等表达。 布尔类型常数 只有“真(TRUE)”和“假(FALSE)”两个值 用字节型数值1表示“TRUE”,0表示“FALSE” 下列几种情况逻辑判断为TRUE: 整型系列(字节型、整型和长整型)的值为奇数; 浮点系列(浮点、双精度、复数)数据的值为非零; 字

3、符型数据非空。 下列几种情况逻辑判断为FALSE: 整型系列(字节型、整型和长整型)的值为偶数; 浮点系列(浮点、双精度、复数)数据的值为零; 字符型数据为空。,常量,整数的表达 十进制数据类型 格式 示例 字节型 nB 12B 整型 n 12nS 12S 无符号整型 nU 12U 长整型 nL 120010L 无符号长整型 nUL 120010UL 64位长整型 nLL 120010LL 无符号64位长整型 nULL 120010ULL(n : 表示09的数字),常量,整数的表达 八进制( “n 或 nO) 数据类型 格式 示例 字节型 “nB “12B 整型 “n “12nO 377O 无

4、符号整型 “nU “12UnOU 377OU 长整型 “nL “120010LnOL 377377OL 无符号长整型 “nUL “120010ULnOUL 377377OUL 64位长整型 “nLL “120010LL nOLL 377377OLL 无符号64位长整型 “nULL “120010ULLnOULL 377377OULL,常量,整数的表达 十六进制(nX) 数据类型 格式 示例 字节型 nXB 12XB 整型 nX 12X 无符号整型 nXU 12XU 长整型 nXL 120010XL 无符号长整型 nXUL 120010XUL 64位长整型 nXLL 120010XLL 无符号6

5、4位长整型 nXULL 120010XULL,常量,整数的表达 nn : 表示数值符号,例如:0,1, , 9 ,A,B,C,D,E,F T : 类型后缀, B : 字节 UB : 无符号字节 S : 整型 US : 无符号整型 (S可省略) L : 长整型 UL : 无符号长整型 LL: 64位整型 ULL: 无符号64位整型 十进制 格式:nnT ; 例如:1232L, 123B 八进制 格式:nnOT ; 例如:1232OL, 123OB 格式:“nnT ; 例如:“1232L, “123B 十六进制 格式:nnXT ; 例如:1A3CXL, FFXB,常量,浮点数 单精度浮点数 0.1

6、 12. 10.5E 1.23D4 -2.4D-4 双精度浮点数 0.1 12. 10.5D 1.23D4 -2.4D-4复数 COMPLEX(10.2, 2) COMPLEX(10.2)COMPLEX(10.2E, 2) COMPLEX(10.2E)COMPLEX(10.2D, 2) COMPLEX(10.2D),变量,变量命名法则 以字母开头,可以包括字母、数字、下划线和美元符号等; 长度:变量名长度可达255个字符; 大小写:除操作系统要求(文件名等)外,一般变量大小写不敏感。Path path PATH pAth,变量的域,全局变量IDL有两种全局变量:系统变量和公共数据块。全局变量在

7、所有程序块中都适用。或者说其工作域涵盖全部程序块。局部变量 除系统变量和公共数据块以外的所有变量都是局部变量。 作用范围: 仅在其定义的主程序或子程序内有效; 调用下一级子程序时,不跟随进入,在下一级子程序无效。 内存释放: 子程序所属局部变量:一旦退出子程序则自动取消,所占用空间自动释放; 主程序所属局部变量: 用 .RESET 命令释放所有变量,或者:; IDLDELVAR, var1, var2,.,变量,系统变量 以“!”开头的变量,如:!Path, !DIR, !DPI, !ERR 类型、结构不能改变,变量不可删除内部系统变量和自定义系统变量;只读系统变量和读写系统变量。 内部系统变

8、量 IDL自带的特殊变量,常数、系统状态、和设置信息等。自定义系统变量 IDLDEFSYSV,变量名,VALUE,Read_Only 变量名以“!”开头; Read_Only是布尔型参数,TRUE表示只读; IDLDEFSYSV,变量1,EXISTS=变量2 测试变量1是否存在,如果存在则变量2赋值1,否则变量2赋值0。,变量的域,全局变量 公共数据块 COMMON dataBox,var1,varN 功能:定义包含变量var1,varN的公共数据块dataBox; dataBox为公共数据块名; var1,varN为变量名; 一旦定义了公共数据块,变量名称和数量不能变,但类型和数值可以变。公

9、共数据块的使用 一旦定义了公共数据块,在任何一个模块中都可以使用; 适用前需要声明,声明的格式与定义一样; 如果声明时忽略变量名,则所有变量都可以使用,如果仅声明部分变量,则仅有被声明的部分可以使用。,内存变量,变量的数据类型 17种数据类型: 与数值类型对应的12种变量类型:字节型、整型、长整型、64位长整型、无符号整型、无符号长整型、64位无符号长整型、浮点型、双精度浮点型、复数、双精度复数、字符串。 再加上如下类型: 未定义 指针 对象 数组 结构,内存变量,内存变量的基本操作 赋值 变量 = 表达式 引用:变量名直接引用于表达式中, x + y Z = x + y 输出内容 Print

10、 ,表达式1,表达式n,FORMAT=格式 各种属性显示 Help,表达式1,表达式n $ ,NAMES=通配符OUTPUT=输出变量 $ ,/SYSTEM_VARIAVBLES,/STRUCTURES 显示变量内容、类型、结构等等信息。,内存变量,内存变量的基本操作 存储 SAVE,变量1,变量n,/ALL,/COMM $,VARIABLES,/COMPRESS $,FILENAME=文件名 $,ROUTINES,SYSTEM_VARIABLES当省略所有参数时,将保存所有内容到文件idlsave.sav恢复 RESTORE ,文件名|,FILENAME=文件名释放 IDL.RESET_SE

11、SSION IDL.FULL_RESET_SESSION IDLDELVAR, var1, var2,.,内存变量,动态数据类型变换 根据运算结果需要IDL会自动调整数据类型; 调整的原则是:将变量提升到能保持表达式的计算精度的数据类型;IDLnum=3 ; NUM as a scalar integer.IDLnum=num*5.2 ; NUM changes to a float!IDLresult=4*x ; 如果x为字节型,result将是整型数。调整的结果:大多数命令都能在任何数据类型或组织结构上起作用。 注意:这种能力也有潜在的巨大危险!有时必须小心,确信知道正在使用哪种数据。,内

12、存变量,强制数据类型变换,内存变量,数据类型编号 在创建数组,读文件时常用到TYPE=value形关键字 TYPE=0 未定义类型 TYPE=1 BYTE TYPE=2 INT TYPE=3 LONG TYPE=4 FLOAT TYPE=5 DOUBLE TYPE=6 COMPLEX TYPE=7 STRING TYPE=8 STRUCT TYPE=9 DCOMPLEX TYPE=10 POINTER TYPE=11 OBJREF TYPE=12 UINT TYPE=13 ULONG TYPE=14 LONG64 TYPE=15 ULONG64,内存变量,整型数使用注意 整型数除法为整型数ID

13、Lresult=12/5IDL print, result2 例:假如想知道IDL图形窗口的比率,而窗口的大小被储存在两个系统变量 !D.X_Size, !D.Y_Size (整型)中,也许会写出如下的IDL代码: aspect=!D.X_Size / !D.Y_Size正确的写法应该是: aspect=float(!D.X_Size) / !D.Y_Size IDL的整型数为短整数(2字节)而其他语言的整型数是4字节。,内存变量,矢量和数组 创建常数矢量矢量就是一维的数组;创建常数矢量用方括号,即:“ ”, 为元素值,各元素用 “,” 分开,例如:IDLV=1,2,3 ; 整型数矢量IDLA

14、=1.0,2.0,3.0 ; 浮点数矢量获取变量属性IDLhelp, 变量名 例如:IDL help,AA FLOAT = Array3,内存变量,矢量和数组 下标引用传统的IDL实用圆括号引用矢量元素,即:“()”, 为下标,例如: IDLI= V(2) ; 引用元素2 IDLI= V(0:2) ; 引用元素0, 1, 2注意:1)下标排列从0开始,2)从IDL5以后可以使用方括号。 DLprint, V(1:2)2 3 DLprint, V1:22 3,内存变量,矢量和数组 矢量的扩展 IDLV=V0:1,5,V1:2 IDLPrint, V1 2 5 2 3用函数创建矢量例如:建立一个值

15、在0到50之间的6个元素浮点矢量,可键入: IDLvector=FIndGen(6)*10 IDLPrint,vector 0.000000 10.0000 20.0000 30.0000 40.0000 50.0000 这里:FIndGen(n)函数生成从 0.0 到 n-1 的5个浮点数.,内存变量,用函数创建矢量array = INTARR( D1, ., D8 , /NOZERO),内存变量,矢量和数组 用函数创建矢量 array = REPLICATE(exp, D1,.,D8)数组的建立(例如:可以建立一个两行三列的数组)输入常数 IDLarray=1,2,3,4,5,6 IDLPrint, array1 2 34 5 6 建立一个矢量后的再调整(Reform) IDLvector=IndGen(6)+1 IDLarray=Reform(vector,3,2) IDLPrint, array 使用建立数组的函数 IDLarray=IndGen(3,2)+1 IDLPrint, array 数组的排列: 先行后列。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号