0

バイナリ データを MATLAB に読み込もうとしています。私のデータは 2 つのセンサー (チャネル A と B) の出力を表し、.bin ファイルの構造は次のとおりです。

ヘッダー情報の 32 バイトまたは 4 つの double

600,000 バイトまたは 75000 倍のデータ (チャネル A)

8 バイトまたは 1 double = ゼロ

ヘッダー情報の 328 バイトまたは 41 double

600,000 または 75041 倍のデータ (チャネル B)

この構造は、ファイルの終わりまで繰り返されます。

チャネル A のデータは「double」として完全に読み取ることができ、ヘッダー情報は文字として読み取ることができます。ここに私が書いたコードがあります:

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