2010-04-06 2 views
2

Я прочитал сообщение «Чтение и запись из/в двоичный файл в Matlab», но у меня все еще есть сомнения. У меня есть двоичный файл длинных двойных значений, созданных с FWRITE в C и в 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

+0

Спасибо. Я не знаю, почему подсознательно я пошел за этим :) – yCalleecharan

ответ

3

Чтобы открыть файл с небольшим обратным порядком байтов, используйте

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

Это не имеет значения, что файл называется, кстати.

+0

Спасибо. Теперь он работает. Я использовал: формат long; fid = fopen ('vz3.dat', 'r', 'l'); mydata = fread (fid, 'double'). См. Мой другой пост «Печать двоичных файлов и желаемая точность». В нем говорится, что Matlab может обрабатывать двойной, но не длинный двойной. – yCalleecharan

+0

@yCalleecharan: 'long double' не является стандартным именем. Предположительно, вы имеете в виду представление, используемое вашим компилятором C++ для (зависимого от реализации) типа данных C++ «long double»? Вам нужно знать больше о вашей инструментальной цепочке, но обычные подозреваемые - это 64-битные форматы IEEE и 80-бит x87. –

0

Если вам нужно использовать дескриптор файла, открытый в другом месте, вы также можете использовать параметр machineformat для fread (что необязательно).

Документация имеется on the MathWorks site.

Смежные вопросы