我正在尝试将二进制数据读入 MATLAB。我的数据代表两个传感器(通道 A 和 B)的输出,我的 .bin 文件的结构如下:
32 字节或 4 双标头信息
600,000 字节或 75000 双数据(通道 A)
8 个字节或 1 个双精度 = 零
328 字节或 41 双标头信息
600,000 或 75041 双数据(通道 B)
这种结构会不断重复,直到文件结束。
我可以将通道 A 数据完美地读取为“双打”,并且可以将标题信息读取为字符。这是我写的代码:
clear all
clc
fname = 'RTL5_57.bin';
fid = fopen(fname,'r','ieee-be');
trash=fread(fid,4,'double')% dump the header info
clear trash;
I=1;
while ~feof(fid)
EPSA{I}=fread(fid,75000,'double');% save channel A data
zero=fread(fid,1,'double');% dump the zero
clear zero
trash=fread(fid,41,'double');% dump the header info
clear trash
EPSB{I}=fread(fid,75000,'double');% save channel B data
I=I+1;
end
我遇到的问题是通道 B 数据都被压缩了,它应该在 ±5 的范围内,但是当我在 Matlab 中查看 EPSB(通道 B)变量时,我得到的数字大得离谱或小得离谱。
我已经尝试了 fread 接受的每种格式(double、float64、real*8 等),但我仍然无法解释通道 B。这是从我的代码中提取数据的示例:
通道 A
0.398515884338350
0.396325422570237
0.396794807234159
0.396951268788881
0.397107730343644
0.396012499461160
0.393822037702184
0.392726806825686
0.393978499256132
通道 B
3.83664933317257e-61
9.89519994200138e-308
-6.62802118285911e+211
-1.86489267740320e-183
-1.48261760418517e+113
7.69290809468232e-12
1.47318957983760e+186
7.69290809468232e-12
-8.38813990347796e-85
-1.76433208833871e+261
如果有人能帮我解释我的 B 频道数据,我将非常感激,我已经走到了死胡同。
干杯,吉姆