テキストとバイナリデ​ータ混在のファイルを​読み込むには?

41 views (last 30 days)
nknknknk
nknknknk on 30 Jul 2017
Commented: nknknknk on 1 Aug 2017
テキストとバイナリデータ混在のファイルを読み込みたい。 以下にファイルの中身の例とデータ構造示します。 データフォーマットはこちらです。
--------------------------------------
《データ構造》
固定ヘッダ行1
固定ヘッダ行2
固定ヘッダ行3
データセットヘッダ行1
データセットヘッダ行2
データセットヘッダ行3
データセットヘッダ行4
データセット1 (512x4バイト)
<CRLF&gt
データセット2 (512x4バイト)
<CRLF&gt
データセット3 (512x4バイト)
<CRLF&gt
データセット4 (512x4バイト)
-------------------------------------------
《ファイルの中身》
e16A0319.272413
03/10/2016 19:26:23 03/10/2016 19:27:24 0000 0000.0 0000.0 00
0000000 0010 0018952 0010 04
1 0 2 00512 1 0000 0015 00829.o 0 0 00 000 12 150024 0.020 BT1
1 1 2 00512 1 0000 0015 00829.o 0 0 00 000 00 150024 3.1746 BC1
1 0 2 00512 1 0000 0015 00829.o 0 0 00 000 12 150023 0.020 BT1
1 1 2 00512 1 0000 0015 00829.o 0 0 00 000 00 150023 3.1746 BC1
邪ラ。ラシゥラOォラそラa泰ラL!TリラヨZラョェラ㌘ラtKラTxラ%rラ晗o蹟( ラ・ラュラソCラ 碩>槞遞ラM泰%ャラキラCコラdコラ・ラマララララ=・"ョfリツリタリリVリN/リコ4リ6DリDHリVリリDリヒ_リラaリjリYnリヲyリ|リ>リヲ筋X筋ト娩壓s」リ。「リgゥリッリyッリ┝リクチリソリ捨リ橆リH籀
゚リチ袙、毖・リハ."ルYル-ルナル ルア'ルI2ルト6ル・ル・ルカ@ル'Jル祟ルxVル輯ル(cルjdルナiルHlルjルoルョtルモgルミpルnル+uル`pル綠ル2・ツEj\MソMS・果_ッ・Xオ・T-適・A」・s=FC>輅筋フfヘナシk・u%dロ0ヨа4ヒセ・ヲ
  1 Comment
Walter Roberson
Walter Roberson on 30 Jul 2017
Approximate translation:
I want to read a file with mixed text and binary data. The following shows an example of file contents and data structure. The data format is here.
--------------------------------------------------------
"data structure"
Fixed header line 1
Fixed header row 2
Fixed header row 3
Data set header line 1
Data set header line 2
Data set header line 3
Data set header line 4
Data set 1 (512 x 4 bytes)
CRLF
Data set 2 (512 x 4 bytes)
CRLF
Data set 3 (512 x 4 bytes)
CRLF
Data set 4 (512 x 4 bytes)
-------------------------------------------------------------
"Contents of file"
[given above. Note that the file contains a number of unprintable characters, so copying and pasting is likely not to give you the exact contents.]

Sign in to comment.

Accepted Answer

Tohru Kikawada
Tohru Kikawada on 31 Jul 2017
Edited: Tohru Kikawada on 31 Jul 2017
試した方法やプログラムなども含めて投稿していただけると適切な回答が得られるケースが多いです。
テキストとバイナリの読み出し方法のサンプルです。
フォーマットの詳細は理解できていませんが、ご参考になれば幸いです。
% Licel Raw Data Formatのサンプルファイルをダウンロード
url = 'https://github.com/hmjbarbosa/RMlicelUSP/raw/master/RM1120200.012';
file = 'RM1120200.012';
outfilename = websave(file,url);
% ファイルオープン
fid = fopen(file);
% ヘッダー読み込み
for k = 1:3
headers{k} = fgetl(fid);
end
% データセットの数を取り出し
third_header = sscanf(headers{3},'%f');
num_datasets = third_header(end);
% データセットのヘッダーを読み込み
datasetheader = {};
for k = 1:num_datasets
datasetheader{k} = fgetl(fid);
end
fread(fid,2,'uint8') % Read CRLF=13d 10d
% データセットのヘッダーに記載されたデータ分バイナリデータを読み込む
data = {};
for k = 1:num_datasets
dataheader_parsed = sscanf(datasetheader{k},'%d');
num_read = dataheader_parsed(4); %
[data{k},cout] = fread(fid,num_read,'long');
fread(fid,2,'uint8') % Read CRLF=13d 10d
end
% データファイルのクローズ
fclose(fid);
% 行列に整形(各データの数が同じ場合は成功)
DataMat = [data{:}];
plot(DataMat);
  9 Comments
Tohru Kikawada
Tohru Kikawada on 1 Aug 2017
Michioさんのご提案で問題ないかと思いますが、R2014b以前でしたら websave の代わりに urlwrite を使ってみるとよろしいかと思います。ご参考まで。
nknknknk
nknknknk on 1 Aug 2017
ご丁寧な対応、本当にありがとうございました。 また質問させていただきます。

Sign in to comment.

More Answers (0)

Categories

Find more on データのインポートとエクスポート in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!