0

我正在尝试将二进制数据读入 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 频道数据,我将非常感激,我已经走到了死胡同。

干杯,吉姆

4

0 回答 0