簡體   English   中英

如何解碼 IEEE754 標准中的 16 位帶符號二進制文件

[英]How to decode 16-bit signed binary file in IEEE754 standard

我有一個名為 .ogpr 的文件格式(openGPR,一種用於地面雷達數據的無效格式),我正在嘗試讀取該文件並使用 Matlab(R) 將其轉換為矩陣。

在文件的第一部分有一個 JSON Header,其中解釋了數據采集的特征(跡線數,position 等),在第二部分有兩個不同的數據塊。 第一個塊包含“真實”探地雷達數據,我知道它們的格式為:

  1. 多字節二進制數據是小端
  2. 浮點二進制數據遵循 IEEE 754 標准
  3. Integer數據按照二進制補碼編碼

我還知道字節總數以及每個“切片”的相對字節數(我們有 512 個樣本 * 10 個通道 * 3971 個切片 [每個樣本 x2 字節])。 此外:'雷達卷類型的數據塊存儲雷達樣本的 3D 數組目前,每個樣本值存儲在 16 位帶符號的 integer 中。每個樣本值以伏特為單位,范圍為 [-20, 20]。 '

第二個塊包含地理位置信息。

我想從該編碼中讀取和轉換數據塊,但不清楚有多少字節破壞了數據以及如何將它們從該編碼轉換為數字。

我嘗試使用這部分代碼:

bin_data = ogpr_data(48:(length(ogpr_data)-1),1);
writematrix(bin_data, 'bin_data.txt');
fileID = fopen('bin_data.txt', 'r', 'ieee-le');
format = 'uint16';
Data = fread(fileID, Inf, format);fclose(fileID)

看起來您發布的代碼混合了文本文件和二進制文件。 writematrix( ) 例程將值寫入逗號分隔文本。 然后你轉身並嘗試使用 fopen() 和 fread() 將其讀取為 IEEE Little Endian 格式的二進制文件。 這是完全不同的兩件事。 您需要選擇一種格式並始終如一地使用它,可以是人類可讀的逗號分隔文本文件,也可以是機器可讀的二進制 IEEE 格式文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM