亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教Fortran未格式化的文件格式

請教Fortran未格式化的文件格式

皈依舞 2019-09-04 13:05:56
Fortran未格式化的文件格式我不明白fortran中未格式化文件的格式。例如:open (3,file=filename,form="unformatted",access="sequential")write(3) matrix(i,:)將矩陣列輸出到文件中。我發現它在兩端填充了4個字節的文件,但是我真的不明白為什么,或者如何控制這種行為。有沒有辦法刪除填充?謝謝
查看完整描述

3 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

Fortran未格式化的文件格式

我不明白fortran中未格式化文件的格式。

例如:

open (3,file=filename,form="unformatted",access="sequential")write(3) matrix(i,:)

將矩陣列輸出到文件中。我發現它在兩端填充了4個字節的文件,但是我真的不明白為什么,或者如何控制這種行為。有沒有辦法刪除填充?

謝謝


查看完整回答
反對 回復 2019-09-07
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

出于這個原因,我從未使用無格式輸出的順序訪問。但是它取決于應用程序,有時候有一個記錄長度指示器(特別是非結構化數據)很方便。正如steabert在gnuplot上查看來自fortran的二進制輸出所示,你可以通過使用關鍵字參數來避免這種ACCESS = 'DIRECT'情況,在這種情況下你需要指定記錄長度。該方法便于有效存儲大型多維結構化數據(恒定記錄長度)。下面的示例寫入一個大小等于數組大小的無格式文件:

REAL(KIND=4),DIMENSION(10) :: a = 3.141INTEGER                    :: reclenINQUIRE(iolength=reclen)aOPEN(UNIT=10,FILE='direct.out',FORM='UNFORMATTED',&
     ACCESS='DIRECT',RECL=reclen)WRITE(UNIT=10,REC=1)aCLOSE(UNIT=10)END

請注意,從可移植性的角度來看,這不是理想的方法。在使用直接訪問編寫的無格式文件中,沒有關于每個元素大小的信息。描述數據大小的自述文本文件對我來說工作正常,我更喜歡這種方法而不是順序模式中的填充。




查看完整回答
反對 回復 2019-09-07
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

Fortran IO是基于記錄的,而不是基于流的。每次通過您寫東西時,write()不僅要寫入數據,還要記錄該記錄的開始和結束標記。兩個記錄標記都是該記錄的大小。這就是為什么在一次寫入中寫入一堆實數(一個記錄:一個開始標記,一堆實數,一個結束標記)具有不同的大小,相對于在單獨的寫入中寫入每個實數(多個記錄,每個一個開始標記,一個真實標記和一個結束標記。如果你寫下大型矩陣,這是非常重要的,因為如果寫得不正確,你可能會占據職業。


查看完整回答
反對 回復 2019-09-07
  • 3 回答
  • 0 關注
  • 1211 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號