idl matlab python暑期課程課件_第1頁
idl matlab python暑期課程課件_第2頁
idl matlab python暑期課程課件_第3頁
idl matlab python暑期課程課件_第4頁
idl matlab python暑期課程課件_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

郭洋天文與空間科學(xué)學(xué)院IDL可視化分析基礎(chǔ)4.輸入和輸出4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出4.2

ASCII碼與二進(jìn)制格式4.3

圖像格式4.4

科學(xué)數(shù)據(jù)格式內(nèi)容基于《IDL程序設(shè)計——數(shù)據(jù)可視化與ENVI二次開發(fā)》,董彥卿,高等教育出版社,20124.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出標(biāo)準(zhǔn)輸入是鍵盤輸入,標(biāo)準(zhǔn)輸出是輸出到屏幕。1)輸入與輸出函數(shù):函數(shù)作用Print標(biāo)準(zhǔn)輸出寫出格式化數(shù)據(jù)Read標(biāo)準(zhǔn)輸入讀入格式化數(shù)據(jù)Reads從字符串中讀取格式化數(shù)據(jù)4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出2)在標(biāo)準(zhǔn)輸入、輸出時,可以對格式進(jìn)行自由控制,即通過調(diào)用格式化控制符:[n]FC[+][-][width]來實現(xiàn):字段含義n代表格式控制符的重復(fù)次數(shù),默認(rèn)為1次FCFormat

Codes:格式控制符,詳見例子及下表+在輸出的數(shù)字前加“+”,僅對數(shù)字格式化輸出有效-控制輸出為左對齊,默認(rèn)右對齊width控制輸出數(shù)字或字符的寬度4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>

print,format='(3I6)',[0,10,20]0

10

20IDL>

print,format='(I+6)',[-10,0,10]-10+0+10IDL>

print,format='(I-6)',[-10,0,10]-10010IDL>;格式符寬度與字符串寬不符,字符串短則右對齊輸出,長則截斷IDL>

print,format='(a4)',['abcdef','ab']abcdab4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;格式符寬度與數(shù)字長度不符,數(shù)字短則右對齊輸出,長則輸出為“*”IDL>

print,format='(I3)',[12,123,1234]12123***IDL>;格式輸出數(shù)字時前加0,數(shù)字短則左側(cè)自動補0IDL>print,format='(I03)',[12,123,1234]012123***IDL>;格式符寬度為0則依照原始格式輸出IDL>

print,format='(I0)',[12,123,1234]1212312344.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出格式化控制符是精確控制輸出格式的符號,如控制輸出字符個數(shù)、位置、浮點數(shù)小數(shù)點位置等格式。IDL中的格式化控制符見下表4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出格式代碼含義a字符及字符串的格式化輸入輸出:若沒有有效的變量,則終止輸入輸出$不輸出換行符,這樣可實現(xiàn)多次輸出為一行F,

D,

E,G用于浮點數(shù)的輸入輸出B,

I,

O,

Z整數(shù)輸入輸出的進(jìn)制轉(zhuǎn)換,B:二進(jìn)制;I:十進(jìn)制;O:八進(jìn)制;Z:16進(jìn)制Q讀取獲得當(dāng)前行的字符數(shù)字符串和H用引用字符或H直接輸出字符T變量輸出的絕對位置TL從當(dāng)前位置向左(后)移動TR從當(dāng)前位置向右(前)移動C()用于輸出日期數(shù)據(jù)(Julian

data格式,/格式,時間格式)C

printf-Style提供C語言風(fēng)格的格式化輸出/換行輸出4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;a用來控制字符輸出IDL>

print,format='(a3)','0123456'012IDL>

print,format='(a10)','0123456'0123456IDL>;":"控制分割符號的輸出,默認(rèn)是空格

IDL>arr=indgen(6)IDL>

print,format='(6I)',arr0

1

2

3

45IDL>

print,format='(6(I,:,","))',arr0,

1,

2,

3,4,5IDL>

print,format='(6(I,:,"$"))',arr0$

1$

2$

3$4$54.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出;lun邏輯設(shè)備號IDL>;'$'抑制換行符,則輸出后不換行

IDL>str1='abc'IDL>

str2

='def'IDL>

openw,lun,‘demo.txt’,/get_lunIDL>

printf,lun,str1

&

printf,lun,str2IDL>

free_lun,lun;demo.txt文件的內(nèi)容為

abcdefIDL>

openw,lun,'demo.txt',/get_lunIDL>

printf,lun,format='($,a)',str1

&

printf,lun,str2IDL>

free_lun,lun;demo.txt文件內(nèi)容為

abcdef4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;讀取某一行字符時,可以通過Q關(guān)鍵字獲得當(dāng)前行的字符數(shù)IDL>

read,charnumber,format='(q)':

abcdefghIDL>

print,charnumber8.00000IDL>;'.\test.txt'文件中包含一行字符‘123’IDL>openr,lun,'.\test.txt',/get_lunIDL>readf,lun,curlun,format='(q)'

IDL>free_lun,lunIDL>

print,curlun3.000004.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;如需輸出其它字符,有直接輸出或H格式字符兩種方法

IDL>var=8IDL>

print,format='("value:",I0)',varvalue:8IDL>

print,format='(6HValue:,I0)',varValue:8IDL>;絕對位置輸出時用T格式化符IDL>

print,format='("ab",T6,"cd")ab

cdIDL>

print,format='("ab",T2,"cd")'acdIDL>;空格輸出用nX,其中n是空格個數(shù)

IDL>print,format='("ab","cd","ef")abcdefIDL>

print,format='("ab",2X,"cd",4X,"ef")ab

cd

ef4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;把字符從當(dāng)前位置向左移動用TlIDL>

print,format='("ab","cd","ef")'abcdefIDL>

print,format='("ab","cd",TL2,"ef")abefIDL>

print,format='("ab","cd",TL3,"ef")aefdIDL>;把字符從當(dāng)前位置向右移動用TrIDL>

print,format='("ab","cd","ef")'abcdefIDL>

print,format='("ab",Tr2,"cd","ef")'ab

cdefIDL>

print,format='("ab",Tr2,"cd",Tr4,"ef")'ab

cd

ef4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出3)浮點數(shù)格式符[n]F[+][-][w][.d][n]D[+][-][w][.d][n]E[+][-][w][.d][n]G[+][-][w][.d]F是以定點計數(shù)法輸出浮點型(單、雙精度)數(shù)值D和F功能一樣,主要是兼容FORTRAN語言習(xí)慣

E以指數(shù)形式(科學(xué)格式)輸出G根據(jù)數(shù)據(jù)大小自動選擇E或者F格式IDL默認(rèn)字符寬度和精度類型w字符跨度d小數(shù)點精度E指數(shù)位數(shù)Float、Complex1573(非Windows為2)Double25163(非Windows為2)其它25163(非Windows為2)4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;F/D格式符IDL> var

=

10.0

&

print,var10.0000IDL>

print,var,format='(f)'10.0000000IDL>

print,var,format='(f10.3)'10.000IDL>

print,var,format='(f4.3)'****4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;E格式符IDL>

print,var,format='(e11.4)'1.0000e+001IDL>;G格式符IDL>

print,var,format='(g11.4)'10.00IDL>

var

=1000000.0IDL>

print,var,format='(g11.4)'1.000e+0064.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出4)進(jìn)制轉(zhuǎn)換二進(jìn)制八進(jìn)制[n]B[-][w][.m][n]I[+][-][w][.m]

十進(jìn)制[n]O[-][w][.m][n]Z[-][w][.m]十六進(jìn)制4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;B輸出二進(jìn)制數(shù)IDL>

var

=

22IDL>

print,var,format='(B)'10110IDL>;I輸出十進(jìn)制數(shù)IDL>

var=1000

&

print,var,format='(I)'1000IDL>

var=1000

&

print,var,format='(I4)'10004.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;O輸出八進(jìn)制數(shù)IDL>

var=7

&

print,var,format='(O)'7IDL>

var=8

&

print,var,format='(O)'10IDL>;Z輸出十六進(jìn)制數(shù)IDL>

var=9

&

print,var,format='(Z)'9IDL>

var=10

&print,var,format='(Z)'A4.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出5)使用C()進(jìn)行日期與時間輸出IDL>;輸出當(dāng)前日期,默認(rèn)為地方時

IDL>print,systime()Fri

Jul

04

20:20:34

2014IDL>

print,systime(/utc)Fri

Jul

04

12:21:01

2014IDL>;輸出秒制當(dāng)前日期,自1970年1月1日起算

IDL>print,systime(1)1.4044765e+009IDL>;輸出儒略日IDL>

print,systime(/julian)2456843.34.輸入和輸出4.1

標(biāo)準(zhǔn)輸入與輸出IDL>;設(shè)置變量為當(dāng)前時間IDL>

curtime=systime(/julian)IDL>;以默認(rèn)格式輸出當(dāng)前時間IDL>

print,curtime,format='(c())'Fri

Jul

04

20:30:22

2014IDL>;輸出年月日IDL>

print,curtime,format='(c(CYI,"-",CMOI,"-",CDI))'2014-

7-4IDL>;輸出時分秒IDL>

print,curtime,format='(c(CHI,":",CMI,":",CSI))'20:30:224.輸入和輸出4.2

ASCII碼與二進(jìn)制格式1)打開文件在IDL中,讀寫ASCII碼與二進(jìn)制文件時,先將一個邏輯設(shè)備號(LUN)與文件進(jìn)行關(guān)聯(lián),然后對設(shè)備邏輯號進(jìn)行讀、寫或更新等操作。LUN范圍為-2~128,其中1~99可以由用戶任意指定;100~128由IDL內(nèi)部進(jìn)行管理;其它值為專用設(shè)備號。例如,0是常規(guī)標(biāo)準(zhǔn)輸入,一般是鍵盤。以下是功能一樣的命令I(lǐng)DL>

read,x:

0IDL>

read,0,x004.輸入和輸出4.2

ASCII碼與二進(jìn)制格式1)打開文件-1是常規(guī)標(biāo)準(zhǔn)輸出,一般是屏幕,以下命令的功能也是一樣的IDL>

print,x0.000000IDL>

printf,-1,x0.000000-2是錯誤流,一般是屏幕4.輸入和輸出4.2

ASCII碼與二進(jìn)制格式常用文件操作函數(shù)函數(shù)名稱功能Close關(guān)閉一個文件Dialog_pickfile對話框方式選擇文件Eof()檢測是否到文件末File_basename獲取不包含目錄部分的文件名Free_lun釋放一個邏輯設(shè)備號并關(guān)閉文件fstat返回一個已打開文件的信息Openr打開文件,只能進(jìn)行讀操作Openw新建文件,可以進(jìn)行讀、寫操作Openu打開文件,可以對內(nèi)容進(jìn)行更新4.輸入和輸出4.2

ASCII碼與二進(jìn)制格式2)ASCII碼文件讀寫IDL使用Readf函數(shù)從ASCII碼(文本或有格式)文件中讀出數(shù)據(jù);使用Printf函數(shù)將數(shù)據(jù)寫出到文件。讀寫方法分為自由讀寫和格式化讀寫兩種。自由讀寫適用于元素間由逗號或空白分割的文件;格式化讀寫適用于元素按照特定格式排列的文件。4.輸入和輸出4.2

ASCII碼與二進(jìn)制格式例如,讀取文件“asciiFile.txt”,內(nèi)容如下:244Column

1:

Band

NumberColumn

2:

X:1Y:1--21.0000000.1079942.0000000.0270353.0000000.0859754.0000000.0219424.輸入和輸出4.2

ASCII碼與二進(jìn)制格式pro

read_afasciifile

=

dialog_pickfile(title='Pick

file',

$filter='*.txt',path='.\')openr,lun,asciifile,/get_lunif

(lun

eq

-1)then

beginvoid

=

dialog_message('fileerror!',/error)returnendiftmp=''

;逐行讀取,并在控制臺輸出while(~eof(lun))

do

beginreadf,lun,tmpprint,tmpendwhilefree_lun,lunend4.輸入和輸出4.2

ASCII碼與二進(jìn)制格式pro

read_af1asciifile

=

dialog_pickfile(title='Pick

file',

$filter='*.txt',path='.\')openr,lun,asciifile,/get_luntmp=intarr(3)

;基于數(shù)據(jù)類型讀取

str=strarr(2)data=fltarr(2,4)openr,lun,asciifile,/get_lunreadf,lun,tmpreadf,lun,strreadf,lun,datahelp,tmp,str,datafree_lun,lunend4.輸入和輸出4.2

ASCII碼與二進(jìn)制格式字符串讀取:Reads函數(shù)IDL>;字符串包含行數(shù)、列數(shù)和日期IDL>str1

=

'10

24500

12

June1996'IDL>column

=

0IDL>row

=

0IDL>date

=

''IDL>reads,str1,column,row,dateIDL>print,column10IDL>print,row24500IDL>

print,date12

June

19964.輸入和輸出4.2

ASCII碼與二進(jìn)制格式3)二進(jìn)制文件讀寫二進(jìn)制文件中的數(shù)據(jù)按照二進(jìn)制字節(jié)方式直接存儲在文件中,它比ASCII碼文件要小得多,更適用于存儲大數(shù)據(jù)。IDL讀寫二進(jìn)制數(shù)據(jù)是利用Readu函數(shù)和Writeu函數(shù)。例如,新建一個二進(jìn)制文件并寫入一個整型數(shù)組:IDL>

openw,lun,'.\binary.dat',/get_lunIDL>

writeu,lun,indgen(4,5)IDL>

free_lun,lun4.輸入和輸出4.2

ASCII碼與二進(jìn)制格式3)二進(jìn)制文件讀寫用Readu函數(shù)讀取:IDL>

openr,lun,'.\binary.dat',/get_lunIDL>

arr

=intarr(4,5)IDL>

readu,lun,arrIDL>

free_lun,lunIDL>

print,arr0123456789101112131415161718194.輸入和輸出4.3

圖像格式IDL自帶了豐富的圖像文件格式讀、寫以及圖像查詢函數(shù)文件格式讀寫圖像查詢BMPRead_bmpWrite_bmpQuery_bmpGIFRead_gifWrite_gifQuery_gifJPEGRead_jpegWrite_jpegQuery_jpegPICTRead_pictWrite_pictQuery_pictPBM/PPMRead_ppmWrite_ppmQuery_ppmPNGRead_pngWrite_pngQuery_pngPostScript無PS或打印設(shè)備無4.輸入和輸出4.3

圖像格式JPEG是與平臺無關(guān)的一種圖像格式,它應(yīng)用廣泛,支持各種級別的壓縮,但要注意壓縮會損失圖像的質(zhì)量。IDL>

jpegfile

=

'.\gaotie.jpg'IDL>

result

=query_image(jpegfile,infor,supported_read=supportinfor,type=type)%

Compiled

module:

QUERY_IMAGE.%

Loaded

DLM:

JPEG.IDL>;輸出查詢結(jié)果,1表示文件是IDL支持的圖像類型

IDL>print,result14.輸入和輸出4.3

圖像格式IDL>;查看文件信息結(jié)構(gòu)體,包含維數(shù)、行列數(shù)、索引、像素類型和圖像類型等信息IDL>

help,infor,/structure**

Structure

<3d88050>,

7

tags,

length=48,data

length=40,

refs=1:3Array[2]0011CHANNELSDIMENSIONSHAS_PALETTEIMAGE_INDEXNUM_IMAGESPIXEL_TYPETYPELONGLONGINTLONGLONGINTSTRING'JPEG'4.輸入和輸出4.3

圖像格式IDL>;輸出IDL支持讀取的文件類型

IDL>print,supportinforBMP

GIF

JPEG

PNG

PPM

SRF

TIFF

DICOMJPEG2000IDL>;輸出當(dāng)前文件類型

IDL>print,typeJPEGIDL>;用Query_jpeg函數(shù)查詢當(dāng)前JPEG文件IDL>

result

=query_jpeg(jpegfile,infor)IDL>;輸出查詢結(jié)果1,表示該文件是IDL支持的JPEG格式

IDL>print,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論