Я пытаюсь открыть и загрузить данные из файла .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);