テキストとバイナリデータ混在のファイルを読み込むには?
25 views (last 30 days)
Show older comments
--------------------------------------
《データ構造》
固定ヘッダ行1
固定ヘッダ行2
固定ヘッダ行3
データセットヘッダ行1
データセットヘッダ行2
データセットヘッダ行3
データセットヘッダ行4
データセット1 (512x4バイト)
<CRLF>
データセット2 (512x4バイト)
<CRLF>
データセット3 (512x4バイト)
<CRLF>
データセット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
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.]
Accepted Answer
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);
More Answers (0)
See Also
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!