Как настроить функцию Fread в Matlab для чтения двоичных данных в файле .jsf - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь открыть и загрузить данные из файла .jsf для вывода изображения.Я впервые пытаюсь прочитать такой файл, и не уверен, что поступлю правильно.Любое руководство будет высоко ценится

Из того, что я видел, мне нужно открыть файл .jsf, используя 'rb' для двоичного файла и затем 'l' для порядка с прямым порядком байтов.Я установил простую проверку, чтобы увидеть, правильно ли открывается файл или нет, но когда дело доходит до чтения данных, я не думаю, что я делаю это правильно.Цель состоит в том, чтобы программа пропустила первые 256 значений в файле, чтобы получить двоичные данные.Оказавшись там, я хочу прочитать данные и создать из них изображение.

Создатель данных велел мне пропустить 16-байтовый заголовок и 240-байтовый заголовок, а затем прочитать двоичные данные в предположении, что используется формат с прямым порядком байтов (8 младших битов - 1-й байт каждого 16-битногоword, 8 старших значащих бит (2-й байт каждого 16-битного слова), и обрабатывают бит расширения знака соответствующим образом для типа данных, если вы преобразуете в числа с плавающей запятой или 32-битные числа.Если у вас есть 16-битные числа, вам нужно масштабировать все для каждой записи с помощью pow (2, -weightingFactor), где weightingFactor - это поле в 240-байтовом заголовке.

clear
clc

fid= fopen('20160503.14323.jsf', 'rb', 'l')

if fid == -1
    error('File is not opened');
end
data=[];
record=0;



% X= fseek( fid, 256, 'cof')   #Need to figure out how to use fseek every line

while ~feof(fid)

   data = fread(fid,1,'uint16');
   image(data)
   record=record+1;
end

fclose(fid);
...