バイナリ データを 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 のデータを解釈するのを手伝ってくれたら、とても感謝しています。ここで行き止まりになりました。
乾杯、ジム