Re: [問題] BINARY檔案讀寫
這狀況可能是這樣的:
你的 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
推
10/07 02:49, , 1F
10/07 02:49, 1F
推
11/11 10:45, , 2F
11/11 10:45, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
1
2
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章