IDL可视化入门与提高_第1页
IDL可视化入门与提高_第2页
IDL可视化入门与提高_第3页
IDL可视化入门与提高_第4页
IDL可视化入门与提高_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——IDL可视化入门与提高其次章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

VARFLOAT=2.00000

重新定义为整型

IDL>var=2;创立一个整型变量,对变量进行初始化IDL>help,var

VARINT=2

2.2.2跟踪变量类型

无论在IDL的命令行,还是在IDL的程序中,使用“help〞命令始终是帮助显示变量类型和大小的有效途径

对于标量类自变量在上列中以给出说明,在此不做赘述

对于数组类变量,“help〞命令显示自变量的名称、大小、类型

IDL>arr=[12,13,14]IDL>help,arr

ARRINT=Array[3]

2.2.3数据类型的转换

IDL自身提供了变量转换函数

IDL>x=3.141567IDL>help,x

XFLOAT=3.14157IDL>fix(x)fix(x)^

%Syntaxerror.IDL>x=fix(x)IDL>help,x

XINT=3IDL>x=byte(x)IDL>help,x

XBYTE=3

假使要转换为byte,字节型变量,在转换的过程中只有最不重要的八位会转换过来,即最终面的八位列入:

Var=567;567转换为二进制为1000110111Var=byte(var);只会保存最终面的八位,0110111Help,var;最终得到的结果是55

IDL中默认的整数数据是16为有符号整型

2.2.4浮点数想整型的转换

当fix和long函数使用于浮点型变量向整数型变量转换时,将会发生截断现象

IDL>x=[4.23,4,56]IDL>print,x

4.230004.0000056.0000IDL>print,fix(x)4456

IDL>arr=[3.14,7.89,-5.7,-9.8]IDL>print,arr

3.140007.89000-5.70000-9.80000IDL>print,fix(arr)

37-5-9IDL>;x

IDL>;将浮点数组转换为整数型数组,数组中所用元素舍去小数点后的数字IDL>print,long(arr)

37-5-9IDL>print,round(arr);对数组中的每个元素进行四舍五入38-6-10

IDL>print,floor(x);小于或等于自变量且最接近自变量的长整型整数4456IDL>print,floor(arr)

37-6-10

IDL>print,cei(arr);大于或等于且最接近自变量的长整型整数%Variableisundefined:CEI.

%Executionhaltedat:$MAIN$IDL>print,ceil(arr)

48-5-9

2.2.5字符串和数字类型之间的转换

字符串变量可以转换为数字类型(里面含有数字数值)

IDL>print,float('3.2')3.20000

IDL>print,float('123abc')123.000

假使不包含数字数值,那么在转换时IDL会给出一个警告信息,并输出解果0

IDL>print,float('wode')

%Typeconversionerror:UnabletoconvertgivenSTRINGtoFloat.%Detectedat:$MAIN$0.000000

当变量的字节类型向字符串类型转换时,输出结果是一个标量变量,该变量是对应于输入变量的ASCII码字符

IDL>print,string([47B,48B])/0

当变量的字符串类型想字节类型转换时,输出结果是一个数组,其元素值是对应于输入字符串中每个字符的ASCII值

IDL>help,byte('ABC')

BYTE=Array[3]IDL>print,byte('ABC')656667

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的大小

XINT=Array[5]IDL>print,x;输出x的值

12345

创立多维数组

IDL>x=[[1,2,3],[4,5,6]];创立两行三列的数组IDL>print,x

123456IDL>;输出xIDL>help,x

XINT=Array[3,2]

IDL>;输出x的横列号,对于IDL中的数组,m为列,n为行

值可以附加到已经存在的数组中

IDL>y=[[x],[6,7,8]]IDL>print,x

123456IDL>print,y

123456678

2.3.3创立数组的函数

IDL的内建函数允许用户按给定的类型创立数组,同时数组中的每一个元素都被初始化为0(intarr),或被初始化为在数组中的索引值(indgen)

IDL>zeros=intarr(6);创立一个元素值都为0的数组IDL>help,zeros

ZEROSINT=Array[6]IDL>print,zeros

000000IDL>print,float(zeros);转换为浮点数组

0.0000000.0000000.0000000.0000000.0000000.000000IDL>index=indgen(6);创立索引数组IDL>print,index

012345IDL>index=indgen(3,5)IDL>help,index

INDEXINT=Array[3,5]IDL>print,index;建立多维索引数组

01234567891011121314

Replicate函数将创立一个特定维数的数组,并将某个标量值复制到该数组中

IDL>arr=replicate(5,3,2);创立元素值为5的2行3列数组IDL>print,arr;输出数组555555

Make_array函数将创立一个特定维数的数组,给数组可以是零数组IDL>zeroed=make_array(3,2)IDL>print,zeroed

0.0000000.0000000.0000000.0000000.0000000.000000创立索引数组

IDL>index=indgen(6);创立索引数组IDL>print,index

012345IDL>index=indgen(3,5)IDL>help,index

INDEXINT=Array[3,5]IDL>print,index

01234567891011121314

IDL>arr=replicate(5,3,2);创立元素值为2的2行3列数组IDL>print,arr;输出数组555555

IDL>zeroed=make_array(3,2,/fix)

%KeywordFIXnotallowedincallto:MAKE_ARRAY%Executionhaltedat:$MAIN$IDL>zeroed=make_array(3,2)IDL>print,zeroed

0.0000000.0000000.0000000.0000000.0000000.000000

IDL>index=make_array(3,2,/float,/index);创立一个两行三列的数组,数组中的元素类型为浮点型,元素值为索引值IDL>print,index

0.0000001.000002.000003.000004.000005.00000

IDL>index=make_array(6,\\long,value=32L);创立一个数组元素为32的长整型索引数组

index=make_array(6,\\long,value=32L);创立一个数组元素为32的长整型索引数组^

%Illegalcharacterinprogramtext.

IDL>index=make_array(6,/long,value=32L);创立一个数组元素为32的长整型数组IDL>help,index

INDEXLONG=Array[6]IDL>print,index

323232323232

2.3.4浮点网格数组

IDL中可以任意步长创立确切而有效的一维网格数组。

要求创立这样的一个浮点数组,它的元素值从1000.0按步长0.23均匀地上升到1010.0.

IDL>x1=1000.0IDL>x2=1010.0IDL>dx=0.25IDL>a=1.0e-5+2IDL>print,a2.00001

IDL>nx=floor((x2-x1)/dx)+1LIDL>help,nx

NXLONG=41

IDL>arr=lindgen(nx)*dx+x1;创立一个含有nx个元素,步长为dx的数组IDL>help,arr

ARRFLOAT=Array[41]IDL>print,arr[39:41],format='(5f11.4)'

%Subscriptrangevaluesoftheformlow:highmustbe>=0,print,arr[38:40],format='(5f11.4)'1009.50001009.75001010.0000

2.4数组下标

第一种形式是将下表用方括号括起来以形成一个数组的名称

IDL>arr=indgen(10)*3;创立以为索引数组,数组的步长为3IDL>print,arr

0369121518212427IDL>index=5IDL>print,arr[index]15

IDL>print,arr,format='(5i6)'0369121518212427IDL>print,arr[7]21

其次种形式是将下标用方括号括起来,并将数组的描述放在小括号内

IDL>index=5;

IDL>print,(arr*10)[index]150

数组下标同样可以表示为数组的形式

IDL>index=[3,5,7,4,2]IDL>print,arr[index]

91521126

当使用下标表示数组的形式时,假使某些下标超出了范围,则该下标将被转换为在允许范围内的最小或最大值

IDL>index=[-1,0,6,9,1000]IDL>print,arr[index]

00182727

2.4.1数组下标的例如

IDL>arr=indgen(8)*8;创立步长为8的索引数组IDL>print,arr

08162432404856IDL>;标量下标IDL>print,arr[5]40IDL>;下标范围IDL>print,arr[3:5]243240IDL>;所有下标

IDL>print,arr[*]

08162432404856IDL>;从特定下标之后的所有下标IDL>print,arr[5:*]404856IDL>;下标用数组表示IDL>index=indgen(2)IDL>print,arr[index]08

IDL>;下标用变量表达式表示IDL>i=3

IDL>print,arr[i-1:i+1]162432

2.4.2多维数组下标的例如

IDL>arr=indgen(5,3)*2IDL>print,arr

0246810121416182022242628IDL>;标量的下标,取12IDL>print,arr[2,1]14

IDL>;包含所有第一行元素的下标IDL>print,arr[*,0]

02468IDL>;包含所有第一列元素的下标IDL>print,arr[0,*]01020

IDL>;跨越两个维度的下标IDL>print,arr[0:2,0:1]024101214

2.4.3一维下标

无论数组的维数是多少,它总可以用一位数组来表示。也就是说,用户可以设置一个特定的下标,从零开始按多维数组中存储元素的顺序来标记多维数组中的每个元素

IDL>arr=indgen(5,3)*1IDL>print,arr

01234567891011121314IDL>;取元素6IDL>print,arr[1,1]6

IDL>print,arr[4]4

IDL>print,arr[6]6

2.4,5多维下标的抽取

IDL>n=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论