#matlab #file #binary #octave
#matlab #файл #двоичный #октава
Вопрос:
Мне нужна помощь в чтении данных из двоичного файла в массив размером 100000×16. Я использую octave.
Вот ссылка на скриншот того, как выглядит файл: http://s29.postimg.org/uclh7whtz/Screenshot.png
Я пробовал использовать fscanf и fread, но не знаю, как с ними поступить — использование их испортило точность и так далее…
Спасибо за помощь!
Ответ №1:
Вы также можете использовать "dlmread"
функцию в MATLAB следующим образом.
a=dlmread('file.dat','t',1,0);
При этом строка заголовка будет пропущена и будет считана полная числовая матрица. Вот пример:
file name=example.dat
time x1 y1 z1
0.000 0.084 0.015 0.0181
0.016 0.008 0.001 0.8012
0.032 0.081 0.064 0.235
a=dlmread('example.dat','t',1,0);
a =
0 0.0840 0.0150 0.0181
0.0160 0.0080 0.0010 0.8012
0.0320 0.0810 0.0640 0.2350
Пожалуйста, обратитесь к dlmread
справке для получения дополнительной помощи.
Ответ №2:
Если это не соответствует точности, есть большая вероятность, что вам просто нужно указать значения 16 строк в виде чисел с плавающей %f
запятой, как в:
fid=fopen(strcat(Name,'.dat'));
C=textscan(fid, '%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f'); % one '%f' for row, is that 16?
fclose(fid);
Это, конечно, проигнорирует заголовки (но, я думаю, вы хотели сделать это любым способом, не так ли?).