Re: [問題] BINARY檔案讀寫

作者: Cypresslin (啊哈哈~~)   2012-10-07 01:22:39
這狀況可能是這樣的:
你的 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來做隨機存取。
作者: prolog (波卡)   0000-00-00 00:00:00
謝謝這麼詳細的回答
作者: chien0115   2011-01-11 10:45:00
推一個

Links booklink

Contact Us: admin [ a t ] ucptt.com