作者Cypresslin (啊哈哈~~)
看板Fortran
標題Re: [問題] BINARY檔案讀寫
時間Sun Oct 7 01:22:39 2012
這狀況可能是這樣的:
你的
OPEN(
27,
FILE=FNAME,
status='old',
FORM='UNFORMATTED')
忽略了存取方式(access)的指定,所以會以預設的循序(sequential)方式讀/寫資料。
而Fortran循序檔在資料頭尾各會有著一個描述資料長度的4-bytes整數,若我寫入三個
雙精度實數,那結構會是這樣:24 雙精度實數 雙精度實數 雙精度實數 24
它的總大小會是4+8+8+8+4,每次的read/write都會對應一組頭尾的Header/Terminator,
所以若MATLAB在寫出資料時不會自動加上這樣的長度描述資料,那讀取時就會出問題。
怎麼判斷?只要計算變數大小*數量與實際檔案大小就知道有沒有其他東西在裡面了。
從你的回應來看,
我猜MATLAB應該是用串流(stream)的方式輸出資料,所以指定binary就可以正常讀取,
這用法等同於其他家編輯器的:
open(
27,
file=FNAME,
status='old',
form='unformatted',
access='stream')
此外,若你的資料型別都很一致(比如說都是4-bytes的整數)
那也可以指定access='direct'與recl來做隨機存取。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.36.179
1F:推 prolog:謝謝這麼詳細的回答 10/07 02:49
2F:推 chien0115:推一個 11/11 10:45