2010-04-06 86 views
2

我讀過「在Matlab中讀寫二進制文件」這篇文章,但我仍然有疑問。我在C與FWRITE創建長雙值的二進制文件,並在Matlab我使用將C寫入的二進制文件導入到Matlab中

fid = fopen('vz3.dat', 'r') 
mydata = fread(fid, 'double') 

其中vz3.dat是我的文件。但是我在Matlab中獲得了垃圾值。根據

[cinfo, maxsize, ordering] = computer 

在Matlab中,我的電腦是一個小端系統(字節排序系統)。有什麼建議麼?

順便說一下,二進制文件必須以.bin結尾。我使用.dat擴展名。這樣做可以嗎?

非常感謝

+0

根據我的經驗,二進制文件可以以任何你想要的方式結束。我使用.raw進行一些數據處理。使用.dat或.bin可能有助於避免混淆。 – Doresoom 2010-04-06 16:53:57

+0

謝謝。我不知道爲什麼下意識地去了dat :​​) – yCalleecharan 2010-04-06 17:53:19

回答

3

要打開小端文件,請使用

fid = fopen('vz3.dat','r','l'); 

不要緊,什麼文件被調用時,順便說一句。

+0

謝謝。現在它正在工作。我用過:format long; fid = fopen('vz3.dat','r','l'); mydata = fread(fid,'double')。請參閱我的其他帖子「二進制文件打印和所需的精度」。它說Matlab可以處理雙倍但不長的雙倍。 – yCalleecharan 2010-04-06 16:21:47

+0

@yCalleecharan:'long double'不是標準的精確名稱。假定你的意思是你的C++編譯器使用(實現相關的)C++數據類型'long double'的表示形式?需要更多地瞭解你的工具鏈,但通常的嫌疑人是64位IEEE和80位x87格式。 – 2013-02-01 16:20:53

0

如果您必須使用其他地方打開的文件句柄,則還可以使用machineformat參數至fread(這是可選的)。

該文檔可用on the MathWorks site