如何在Matlab中设置Fread函数以读取.jsf文件中的二进制数据

时间:2019-04-08 15:38:22

标签: matlab fread

我正在尝试从.jsf文件打开并加载数据以输出图像。这是我第一次尝试读取这样的文件,并且不确定我会以正确的方式使用它。任何指导将不胜感激

从我所看到的,我需要使用'rb'打开二进制文件,然后使用'l'打开低端字节序的.jsf文件。我设置了一个简单的检查来查看文件是否正确打开,但是,在读取数据时,我认为我没有正确处理它。目标是让程序跳过文件中的前256个值以获取二进制数据。到达那里后,我想读取数据并从中生成图像。

数据的创建者告诉我,跳过16个字节的标头和240个字节的标头,然后以低字节序格式读取二进制数据(8个最低有效位是每个16位字的第一个字节,即8个最高有效位是每个16位字的第2个字节),如果要转换为浮点数或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);

0 个答案:

没有答案