Считывание данных из двоичного файла в matlab, разделение на векторные

#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);
 

Это, конечно, проигнорирует заголовки (но, я думаю, вы хотели сделать это любым способом, не так ли?).