IDL可视化入门与提高
更新时间:2024-03-21 21:07:01 阅读量: 综合文库 文档下载
第二章 IDL可视化入门与提高 2.1 交互式与编译式
2.1.1 交互式模式
交互式模式可以利用简洁有效的单行命令快速进行数据分析和实现可视化。在交互式模式下,命令在IDL提示符下输入,并且当用户按回车键时执行
输入如下命令:
X = findgen(201)*0.1 ; 创建一个包含了201个元素的浮点数组,第一个元素为0.0,步长为0.1
Y = sin(x) ;创建浮点数组x的正弦函数数组 Plot,x,y; 绘出sin(x)的函数
交互模式最大的有点是,用户工作的结果能迅速地在图像、图形等窗口中实现可视化
2.1.2 编译模式 在此先不做介绍
2.2变量
IDL创建变量时,不需要对变量进行类型声明
IDL> var = 2.0;创建一个浮点型变量,对变量进行初始化 IDL> help,var
VAR FLOAT = 2.00000
重新定义为整型
IDL> var = 2;创建一个整型变量,对变量进行初始化 IDL> help,var
VAR INT = 2
2.2.2跟踪变量类型
无论在IDL的命令行,还是在IDL的程序中,使用“help”命令始终是帮助显示变量类型和大小的有效途径
对于标量类自变量在上列中以给出说明,在此不做赘述
对于数组类变量,“help”命令显示自变量的名称、大小、类型
IDL> arr = [12,13,14] IDL> help,arr
ARR INT = Array[3]
2.2.3数据类型的转换
IDL自身提供了变量转换函数
IDL> x = 3.141567 IDL> help,x
X FLOAT = 3.14157 IDL> fix(x) fix(x) ^
% Syntax error. IDL> x = fix(x) IDL> help,x
X INT = 3 IDL> x = byte(x) IDL> help,x
X BYTE = 3
如果要转换为byte,字节型变量,在转换的过程中只有最不重要的八位会转换过来,即最后面的八位 列入:
Var = 567; 567转换为二进制为1000110111 Var = byte(var); 只会保留最后面的八位,0110111 Help,var;最后得到的结果是55
IDL中默认的整数数据是16为有符号整型
2.2.4浮点数想整型的转换
当fix 和 long函数使用于浮点型变量向整数型变量转换时,将会发生截断现象
IDL> x = [4.23,4,56] IDL> print,x
4.23000 4.00000 56.0000 IDL> print,fix(x) 4 4 56
IDL> arr = [3.14,7.89,-5.7,-9.8] IDL> print,arr
3.14000 7.89000 -5.70000 -9.80000 IDL> print,fix(arr)
3 7 -5 -9 IDL> ;x
IDL> ;将浮点数组转换为整数型数组,数组中所用元素舍去小数点后的数字 IDL> print,long(arr)
3 7 -5 -9 IDL> print,round(arr);对数组中的每个元素进行四舍五入 3 8 -6 -10
IDL> print,floor(x);小于或等于自变量且最接近自变量的长整型整数 4 4 56 IDL> print,floor(arr)
3 7 -6 -10
IDL> print,cei(arr);大于或等于且最接近自变量的长整型整数 % Variable is undefined: CEI.
% Execution halted at: $MAIN$ IDL> print,ceil(arr)
4 8 -5 -9
2.2.5字符串和数字类型之间的转换
字符串变量可以转换为数字类型(里面含有数字数值)
IDL> print,float('3.2') 3.20000
IDL> print,float('123abc') 123.000
如果不包含数字数值,那么在转换时IDL会给出一个警告信息,并输出解果0
IDL> print,float('wode')
% Type conversion error: Unable to convert given STRING to Float. % Detected at: $MAIN$ 0.000000
当变量的字节类型向字符串类型转换时,输出结果是一个标量变量,该变量是对应于输入变量的ASCII码字符
IDL> print,string([47B,48B]) /0
当变量的字符串类型想字节类型转换时,输出结果是一个数组,其元素值是对应于输入字符串中每个字符的ASCII值
IDL> help,byte('ABC')
2.2.6变量的名称
IDL中变量的名称必须以字母开头,它们可以包括其他字母、数字、下划线、美元符号。 2.3数组简介
在IDL中可以为任何IDL数据类型创建1~8维数组。紧凑的数组语法能保证数组运行时不适用循环操作。数组操作的优点体现在运行速度上 2.3.1创建数组
在IDL中利用方括号【】,创建数组 创建一维数组
IDL> x = [1,2,3,4,5] IDL> help,x;用于显示x的大小
X INT = Array[5] IDL> print,x;输出x的值
1 2 3 4 5
创建多维数组
IDL> x = [[1,2,3],[4,5,6]];创建两行三列的数组 IDL> print,x
1 2 3 4 5 6 IDL> ;输出x IDL> help,x
X INT = Array[3, 2]
IDL> ;输出x的横列号,对于IDL中的数组【m,n】,m为列,n为行
值可以附加到已经存在的数组中
IDL> y = [[x],[6,7,8]] IDL> print,x
1 2 3 4 5 6 IDL> print,y
1 2 3 4 5 6 6 7 8
2.3.3创建数组的函数
IDL的内建函数允许用户按给定的类型创建数组,同时数组中的每一个元素都被初始化为0(intarr),或被初始化为在数组中的索引值(indgen)
IDL> zeros = intarr(6);创建一个元素值都为0的数组 IDL> help,zeros
ZEROS INT = Array[6] IDL> print,zeros
0 0 0 0 0 0 IDL> print,float(zeros);转换为浮点数组
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 IDL> index = indgen(6);创建索引数组 IDL> print,index
0 1 2 3 4 5 IDL> index = indgen(3,5) IDL> help,index
INDEX INT = Array[3, 5] IDL> print,index;建立多维索引数组
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Replicate函数将创建一个特定维数的数组,并将某个标量值复制到该数组中
IDL> arr = replicate(5,3,2);创建元素值为5的2行3列数组 IDL> print,arr;输出数组 5 5 5 5 5 5
Make_array函数将创建一个特定维数的数组,给数组可以是零数组IDL> zeroed = make_array(3,2) IDL> print,zeroed
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 创建索引数组
IDL> index = indgen(6);创建索引数组 IDL> print,index
0 1 2 3 4 5 IDL> index = indgen(3,5) IDL> help,index
INDEX INT = Array[3, 5] IDL> print,index
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
IDL> arr = replicate(5,3,2);创建元素值为2的2行3列数组 IDL> print,arr;输出数组 5 5 5 5 5 5
IDL> zeroed = make_array(3,2,/fix)
% Keyword FIX not allowed in call to: MAKE_ARRAY % Execution halted at: $MAIN$ IDL> zeroed = make_array(3,2) IDL> print,zeroed
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
IDL> index = make_array(3,2,/float,/index);创建一个两行三列的数组,数组中的元素类型为浮点型,元素值为索引值 IDL> print,index
0.000000 1.00000 2.00000 3.00000 4.00000 5.00000
IDL> index = make_array(6,\\long,value = 32L);创建一个数组元素为32的长整型索引数组
index = make_array(6,\\long,value = 32L);创建一个数组元素为32的长整型索引数组 ^
% Illegal character in program text.
IDL> index = make_array(6,/long,value = 32L);创建一个数组元素为32的长整型数组 IDL> help,index
INDEX LONG = Array[6] IDL> print,index
32 32 32 32 32 32
2.3.4浮点网格数组
IDL中可以任意步长创建精确而有效的一维网格数组。
要求创建这样的一个浮点数组,它的元素值从1000.0按步长0.23均匀地上升到1010.0.
IDL> x1 = 1000.0 IDL> x2 = 1010.0 IDL> dx = 0.25 IDL> a = 1.0e-5+2 IDL> print,a 2.00001
IDL> nx = floor((x2-x1)/dx)+1L IDL> help,nx
NX LONG = 41
IDL> arr = lindgen(nx)*dx + x1;创建一个含有nx个元素,步长为dx的数组 IDL> help,arr
ARR FLOAT = Array[41] IDL> print,arr[39:41],format = '(5f11.4)'
% Subscript range values of the form low:high must be >= 0, < size, with low <= high: ARR.
% Execution halted at: $MAIN$ IDL> print,arr[38:40],format='(5f11.4)' 1009.5000 1009.7500 1010.0000
2.4数组下标
第一种形式是将下表用方括号括起来以形成一个数组的名称
IDL> arr = indgen(10)*3;创建以为索引数组,数组的步长为3 IDL> print,arr
0 3 6 9 12 15 18 21 24 27 IDL> index = 5 IDL> print,arr[index] 15
IDL> print,arr,format='(5i6)' 0 3 6 9 12 15 18 21 24 27 IDL> print,arr[7] 21
第二种形式是将下标用方括号括起来,并将数组的描述放在小括号内
IDL> index = 5;
IDL> print,(arr*10)[index] 150
数组下标同样可以表示为数组的形式
IDL> index = [3,5,7,4,2] IDL> print,arr[index]
9 15 21 12 6
当使用下标表示数组的形式时,如果某些下标超出了范围,则该下标将被转换为在允许范围内的最小或最大值
IDL> index = [-1,0,6,9,1000] IDL> print,arr[index]
0 0 18 27 27
2.4.1数组下标的示例
IDL> arr = indgen(8)*8;创建步长为8的索引数组 IDL> print,arr
0 8 16 24 32 40 48 56 IDL> ;标量下标 IDL> print,arr[5] 40 IDL> ;下标范围 IDL> print,arr[3:5] 24 32 40 IDL> ;所有下标
IDL> print,arr[*]
0 8 16 24 32 40 48 56 IDL> ;从特定下标之后的所有下标 IDL> print,arr[5:*] 40 48 56 IDL> ;下标用数组表示 IDL> index = indgen(2) IDL> print,arr[index] 0 8
IDL> ;下标用变量表达式表示 IDL> i = 3
IDL> print,arr[i-1:i+1] 16 24 32
2.4.2多维数组下标的示例
IDL> arr = indgen(5,3)*2 IDL> print,arr
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 IDL> ;标量的下标,取12 IDL> print,arr[2,1] 14
IDL> ;包含所有第一行元素的下标 IDL> print,arr[*,0]
0 2 4 6 8 IDL> ;包含所有第一列元素的下标 IDL> print,arr[0,*] 0 10 20
IDL> ;跨越两个维度的下标 IDL> print,arr[0:2,0:1] 0 2 4 10 12 14
2.4.3一维下标
无论数组的维数是多少,它总可以用一位数组来表示。也就是说,用户可以设置一个特定的下标,从零开始按多维数组中存储元素的顺序来标记多维数组中的每个元素
IDL> arr = indgen(5,3)*1 IDL> print,arr
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 IDL> ;取元素6 IDL> print,arr[1,1] 6
IDL> print,arr[4] 4
IDL> print,arr[6] 6
2.4,5多维下标的抽取
IDL> n = 5
IDL> arr = indgen(n,n) IDL> print,arr
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 IDL>
IDL> index = lindgen((n+1)/2)*2 IDL> print,index
0 2 4 IDL> print,arr[index] 0 2 4 IDL> print,arr[index,index] 0 12 24 IDL> sub = arr[*,index] IDL> print,sub
0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 IDL> sub = sub[index,*] IDL> print,sub
0 2 4 10 12 14 20 22 24
IDL> sub = (arr[*,index])[*,index] IDL> print,sub
0 1 2 3 4 20 21 22 23 24 20 21 22 23 24
正在阅读:
IDL可视化入门与提高03-21
编译原理复习题2(第二版张素琴吕映芝蒋维杜戴桂兰编著)01-06
(绝对真)微信泡妞技巧03-01
学习宣传和贯彻落实邯郸市学校安全管理条例01-29
资格预审文件06-27
匈牙利政府互换奖学金项目01-14
李道生回忆录01-27
给排水的知识点03-15
公路养护安全作业规程试题07-29
过程流体机械期末复习资料附答案04-16
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 可视化
- 入门
- 提高
- IDL
- 《员工薪酬福利管理(第2版)》习题答案
- 2013中考数学二模
- 2016年秋物联网技术基础本科试卷
- 铅、铋混合溶液的连续滴定
- 牛生产学试题
- 兰州大学网络教育大学英语(4)课程作业 - A
- 合肥市教育局关于举办2018年合肥市校园足球教练员培训班的补充通
- 学生毕业留言寄语大全
- 论高职院校信息共享空间的构建
- 浅析中学物理教学中渗透德育教育-精品文档
- 基于51单片机的光电编码器测速报告汇总 - 图文
- 《传播研究方法》资料
- 江西师大附中临川一中高三年级英语联考试卷
- 贵州威宁经济开发区冷弯型钢产业园建设项目监理规划
- 语言学纲要复习重点
- 硫酸设备施工方案
- 2004年全国高中数学联赛试题及答案 - 图文
- 第六中学第十五期“少年军校”活动方案
- (八年级物理教案)重力物理教案
- 二年级语文月考三试卷分析 -