精華區beta Fortran 關於我們 聯絡資訊
這狀況可能是這樣的: 你的 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
prolog:謝謝這麼詳細的回答 10/07 02:49
chien0115:推一個 11/11 10:45