2017-08-27 12 views
3

*.txtのRawデータファイルをMatlabを使用して読み込み、適切なヘッダーでExcelに変換する必要があります。Matlabで特殊文字を使用してテキストファイルを読む

0.0502650000000000 202241546530.000 50397417 0 -127 128 
-255 1300812 0 0 0 0 
0.0512950000000000 202245273937.000 65971821 0 -127 128 
-255 1300812 0 0 0 0 
0.0508930000000000 202248987612.000 65466246 0 -127 128 
-255 1300812 0 0 0 0 
0.0509060000000000 202252718742.000 65606097 0 -127 128 
-255 1295785 0 0 0 0 
0.0509240000000000 202256444380.000 65667670 0 -127 128 
-255 1295785 0 0 0 0 

所望のデータフォーマット

 C1    C2   C3  C4  C5  C6 
0.0502650000000000 202241546530.000 50397417 0-127 128-255 1300812 
0.0512950000000000 202245273937.000 65971821 0-127 128-255 1300812 
0.0508930000000000 202248987612.000 65466246 0-127 128-255 1300812 
0.0509060000000000 202252718742.000 65606097 0-127 128-255 1295785 
0.0509240000000000 202256444380.000 65667670 0-127 128-255 1295785 
をインポートした後、次のよう

生データ上のデータ、csvread()作品については

0.050265,202241546530,50397417,0-127,128-255,1300812 
0.051295,202245273937,65971821,0-127,128-255,1300812 
0.050893,202248987612,65466246,0-127,128-255,1300812 
0.050906,202252718742,65606097,0-127,128-255,1295785 
0.050924,202256444380,65667670,0-127,128-255,1295785 

しかし、複数の行にデータを置きます

私は特定のヘッダーを追加する方法を扱うことができますが、データは複数の行に入っています。私は特殊文字-のためだと思います。

誰でもこのデータをMatlabにラインごとに読み込む方がいいですか?おかげさまで

+1

["ファイルには数値のみを含める必要があります。"](https://www.mathworks.com/help/matlab/ref/csvread.html)数値以外のものをインポートしています。 – beaker

+0

テーブルとしてインポートしますか?あなたはなぜ、より良い方法が行単位で読むことになると思いますか?データの数値部分を数値データとして保持したいのですか、それとも重要ではありませんか? –

答えて

3

これは、それは時のファイルの行を読み込み、テーブルエントリに得られた細胞の配列を変換し、私

clear 

% Names of input and output files 
file_in = 'sample_data.txt'; 
xl_filename = 'output.xlsx'; 

% Number of columns (assumed fixed) 
n_col = 6; 

fIN = fopen(file_in,'r'); 

% Load each line of the file as cell, split by ',', convert into a table 
% entry and add it to the table 
tline = fgets(fIN); 
res_table = cell2table(cell(0,n_col)); 
while (ischar(tline)) 
    res_table = [res_table ; cell2table(strsplit(tline,','))]; 
    tline = fgets(fIN); 
end 

% Change table headers and write to the excel file 
res_table.Properties.VariableNames = {'C1' 'C2' 'C3' 'C4' 'C5' 'C6'} 
writetable(res_table,xl_filename,'Sheet',1,'Range','A1'); 

fclose(fIN); 

のために動作します。それは '、'で分かれているので、 ' - 'は元のままです。 writetableは、表をExcelのスプレッドシート、位置A1から始まるシート1に書き込みます。異なる位置とシート番号で開始することができます。この機能には他にも便利なオプションがあります。

このソリューションの欠点は、明示的にスプレッドシートを数値に変換する必要があることです。これは、一方では1つの選択 - ワンクリックプロセスです。エントリの一部に ' - 'が含まれているため、MATLABで直接数値に変換することは、わかっている限り簡単ではありません。

関連する問題