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

39 ビュー (過去 30 日間)
nknknknk
nknknknk 2017 年 7 月 30 日
コメント済み: nknknknk 2017 年 8 月 1 日
テキストとバイナリデータ混在のファイルを読み込みたい。 以下にファイルの中身の例とデータ構造示します。 データフォーマットはこちらです。
--------------------------------------
《データ構造》
固定ヘッダ行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 件のコメント
Walter Roberson
Walter Roberson 2017 年 7 月 30 日
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.]

サインインしてコメントする。

採用された回答

Tohru Kikawada
Tohru Kikawada 2017 年 7 月 31 日
編集済み: Tohru Kikawada 2017 年 7 月 31 日
試した方法やプログラムなども含めて投稿していただけると適切な回答が得られるケースが多いです。
テキストとバイナリの読み出し方法のサンプルです。
フォーマットの詳細は理解できていませんが、ご参考になれば幸いです。
% 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 件のコメント
Tohru Kikawada
Tohru Kikawada 2017 年 8 月 1 日
Michioさんのご提案で問題ないかと思いますが、R2014b以前でしたら websave の代わりに urlwrite を使ってみるとよろしいかと思います。ご参考まで。
nknknknk
nknknknk 2017 年 8 月 1 日
ご丁寧な対応、本当にありがとうございました。 また質問させていただきます。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeデータのインポートとエクスポート についてさらに検索

Community Treasure Hunt

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

Start Hunting!