IDL中at代码详细解释以及用法大全.doc_第1页
IDL中at代码详细解释以及用法大全.doc_第2页
IDL中at代码详细解释以及用法大全.doc_第3页
IDL中at代码详细解释以及用法大全.doc_第4页
IDL中at代码详细解释以及用法大全.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

IDL中Format代码详细解释以及用法大全Format这个关键字在IDL应用过程中无处不在,Format代码(Format codes)有两种:第一种用于在数据的输入输出、类型转换过程中,是最经常用到一种方法。我们常听到诸如float型小数点没有显示全、科学计数格式转换、输出的时候字符怎么对齐,字符宽度设置、二进制、8进制、10进制、16进制怎么转换等等都和这种用法有关。功能很强大,也是大家容易晕的地方。而且目前市面的IDL书和帮助介绍的都不全面,有些书还有严重的谬误。所以这里对Format做了全面整理详细全面介绍了format的含义以及format的各种用法。第二种是用于嵌入到字符串中,用于字符格式控制。如字体选择、上标、下标控制等。用在直接图形发xyouts,对象IDlgrtext widget界面组件里。以后再做介绍。一、基本语法介绍IDL的format语法结构如下:N FC+-width符号描述N代表格式控制的重复次数,默认是1FC即format codes的简写,格式控制代码+给正数加上前缀-控制输出时对齐方向WidthWidth是输出字符的宽度看着上面的语法结构,谁都有点晕。让我们来详细解释一下:1.N代表格式控制的重复次数,默认是:默认1的情况IDL print,FORMAT=(I12), 300,400,500300400500重复3次情况IDL print,FORMAT=(3I12), 300,400,5003004005002.FC即format codes的简写,格式控制代码也就是你需要实现的功能的格式控制码,这个在下面做最详细介绍3.+给正数加上前缀如果是正数输出的时候在数字前面加上一个+。这个+符号只有在数字的格式化输出的时候才有效。不是十进制的数字输出的时候也可以加,不过没啥效果例:没有+情况IDL print,FORMAT=(I12), 300,-300300-300有+号情况IDL print,FORMAT=(I+12), 300,-300+300-3004.控制输出时对齐方向也是可选符号,加了-符号字符和数字输出的时候是左对齐,默认是右对齐,例:默认情况IDL print,FORMAT=(2I12), 300,-300300-300加上-IDL print,FORMAT=(2I-12), 300,-300300-3005.Width是输出字符的宽度。如果定义的宽度超出输出字符宽度,不补0或空格1.默认情况如果格式输出定义宽度超过字符宽度是补空格的IDL print,FORMAT=(a10),abcabcIDL print,FORMAT=(I10),4004002.在对数字输出的时候,如果在宽度前面加0。超出部分就会补0IDL print,FORMAT=(I010), 40000000004003.自然宽度输出:如果定义width是0的话。在值的读取和输出时候采用自然宽度,也是数字默认格式宽度是多少就按多少读取和输出。对字符宽度不定情况,非常有用。例如读取表格数据。a=26.0001, 92.555, 344.2,101.0 ,6.123, 99.845,23.723 ,200.02111 ,141.93IDL print,a26.000192.5550344.200101.0006.1230099.845023.7230200.020141.930IDL print,FORMAT=(f0),a26.00009992.555000344.200012101.0000006.12300099.84500123.723000200.020004141.929993二、Format codes格式控制代码的详细介绍和用法说明IDL中支持Format codes代码有13种用法。如下表所示:numFormat Code描述使用范围1A用于字符的输出2:冒号用于输出时终止符号的处理3$用于禁止输出换行符4F, D, E, G用于浮点数的输入、输出5B, I, O, Z用于整形数的输入、输出的格式转换。B是进制 I为十进制 o是八进制 z为16进制6Q在进行读取时,返回每一行的字符数7字符串和H用引用字符 或 H直接输出字符8T定义输出字符的绝对位置9TL把当前的字符位置向后(左)移动10TR ,X把当前的字符位置向前(右)移动11C()用于输出日期数据(Julian data格式 ,/ 格式,时间格式)12C printf-Style提供c系语言风格的格式输出,为熟悉c语言输准备。13/换行输出Format codes的13种详细用法如下:1.A字符操作用于字符的格式化输出,用于print/printf.语法:nA-wn,-,w见基本语法介绍例子:1.输出宽度6字符IDL PRINT, FORMAT = (A6), 1234567891234562.:输出分割符操作冒号“:“用于每个参数输出时的分割符的设定。默认是空格分隔。IDL a=200.1,11,30.4,56,001,300.6IDL PRINT, FORMAT = (6(I), a2001130561300用逗号分割IDL PRINT, FORMAT =(6(I,:,), a200,11,30,56,1,3003.抑制换行符$符号用于抑制换行符的输出。在使用print在控制台输出和用printf向文本输出数据的时候。IDL默认是自动换行的。如:IDL str1=aIDL str2=bIDL print,str1 & print,str2ab可以看出打印完a就就自动换行了。对输出a进行抑制换行符输出:IDL print,format=( $,a ) ,str1 & print,str2ab4.F, D, E, G浮点数操作这四个格式符都是用于浮点数的输出和输入。语法:nF+-w.dnD+-w.dnE+-w.dEenG+-w.dEeF是定点计数法来输出浮点型(单精度和双精度)数值。把数值四舍五入到d的精度,保留w个字符宽度D和F功能完全是一样的,主要是兼容FORTRAN语言习惯。让给习惯使用FORTRAN的人提供便利。E以指数形式(科学格式)输出浮点数,把数值四舍五入到d的精度,保留w个字符宽度G根据数据大小自动选择科学格式E或者F格式输出对浮点格式化输出,IDL提供默认字符宽度和精度数据类型W默认字符宽度d默认小数点精度位数Float, Complex157Double2516All Other Types2516例子格式字符使用范例F/DIDL a=100.IDL print,a,format=(f)100.0000000IDLa=100.IDL print,a,format=(f)100.0000000000000000IDLa=100.IDL print,a,format=(f10.3)100.000IDa=100.IDL print,a,format=(f2.3)*EIDLa=100.IDL print,a,format=(e11.4)1.0000e+002IDLa=100.IDL print,a,format=(E11.4)1.0000E+002GIDLa=100.IDL print,a,format=(g10.4)100.0IDLa=10000000.IDL print,a,format=(g10.4)1.000e+0075.B, I, O, Z进制转换操作用于对整形数值的输出。可以用来对二进制、十进制、八进制、十六进制转换。B输出2进制数;I输出10进制数;O输出8进制数;Z输出16进制数语法nB-w.mnI+-w.mnO-w.mnZ-w.m格式字符使用范例BIDL a=10IDL print,a,format=(b)1010IDL a=1000IDL print,a,format=(b15)1111101000IIDL a=1000IDL print,a,format=(I)1000IDL a=1000IDL print,a,format=(I10)1000IDL print,a,format=(I15)1000IDL print,a,format=(I3)*OIDL a=10IDL print,a,format=(o)12IDL a=10IDL print,a,format=(o-6)12ZIDL a=10IDL print,a,format=(Z6)AIDL a=5000IDL print,a,format=(Z10)1388IDL a=5000IDL print,a,format=(Z3)*6.Q计数操作Q很有意思,它是在读数据时,返回当前行的字符个数。如果你想得到文件中一行的个数,这个会很有用。例如:数据data.txt,有三行保存以下数据。123451234567123456789程序如下:Protestfile = E:testdata.txtopenr,lun,file,/get_lunWHILE( EOF(lun) DO BEGINREADF, lun, CUR, FORMAT = (q)print,CURENDWHILEfree_lun,lunEnd结果如下:5.000007.000009.000007.字符串和H字符直接输出操作这个用途是直接输出字符串。IDL提供了两种方法。第一是直接用双引号引起来可以直接输出字符串IDL PRINT, FORMAT = (Value: , I0), 23Value: 23Value: ,就是直接输出了。第二种方法是用H格式符IDL PRINT, FORMAT = (7HValue: , I0), 23Value: 23H后面的字符就直接输出了。7表示的是输出字符个数是多少,必须和字符串个数相等。8.T输出位置操作T用于字符输出时候得绝对位置语法Tnn表示的是字符的位置IDL PRINT, FORMAT = (First, T4, Middle)FirMiddleIDL PRINT, FORMAT = (First, T8, Middle)FirstMiddleIDL PRINT, FORMAT = (First, T10, Middle)FirstMiddle注意:T符号和TL, TR, X不同,T定义的是绝对位置,TL, TR, X定义的是字符偏移量。IDL PRINT, FORMAT = (First, 20X, Last, T10, Middle)FirstMiddleLast9.TL输出左平移操作Tl的用途是把字符从当前位置向左移动。一般用于输入相同数据两次或不连续输出数据IDL PRINT, FORMAT = (First, 20X, Last, TL15, Middle)FirstMiddleLast10.TR ,X输出右平移操作Tr和z作用和Tl相反,是把字符从当前位置向右移动。一般用于输出时输出空格,在输入时跳过不需要的数据。语法:TRn,nXIDL PRINT, FORMAT = (First, 15X, Last)FirstLastIDL PRINT, FORMAT = (First, TR15, Last)FirstLastTR和X区别在与:在一行输出的结尾不会生产多余的空格输出。IDL PRINT, FORMAT = (First, 15X)FirstDL PRINT, FORMAT = (First, TR15)Firstbbbbbbbbbbbbbbbb用来代表空格11.C()时间输出操作用于输出日期数据。语法nC(c0,c1,.,cx)输入时默认格式C(CDwA, X, CMoA, X, CDI, X, CHI, X, CMI, X, CSI, CYI5)输出时默认格式C(CDwA, X, CMoA, X, CDI2.2, X, CHI2.2, :, CMI2.2, :, CSI2.2,CYI5)看着挺复杂吧,其实挺加到你看我慢慢解释CMOA字符月,想输出月的时候就用它CMOI数字月,想输出月的时候就用它CDI天,想输出天的时候就用它CYI年,想输出年的时候就用它CHI时,想输出时的时候就用它CMI分,想输出分的时候就用它CSI秒,想输出秒的时候就用它CSF带小数点的秒,想输出秒的时候就用它CDWA,想输出周的时候就用它。有CDWA CdWA CdwA三种写法,输出结果大小写不一样:CAPA,想输出(上午下午)的时候就用它。有CAPA CaPA CapA,输出结果大小写不一样:1.默认输出当前时间IDL PRINT, FORMAT=(C(), SYSTIME(/JULIAN)Mon Apr 12 22:29:25 2010我想输出当前年,在c()里加上CYIIDL PRINT, FORMAT=(C(CYI), SYSTIME(/JULIAN)2010我想输出当前月IDL PRINT, FORMAT=(C(cmoa), SYSTIME(/JULIAN)Apr输出年:月:日IDL PRINT, FORMAT=(C(CYI,:,CMOI,:,CDi), SYSTIME(/JULIAN)2010: 4:12输出时间IDL PRINT,FORMAT=(C(CHI2.2,:,CMI2.2,:,CSF05.2),SYSTIME(/JULIAN)22:39:32.00输出上午下午IDL PRINT,

温馨提示

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

评论

0/150

提交评论