2011-08-16 40 views
2

これまでの素晴らしい火曜日があることを願っています。 MATLABの数値行列に文字列ヘッダーを追加することはできません。私は現在持っているマトリックスにヘッダーを追加しようとしており、タブ区切りのテキストファイルに出力しています。私の研究では、マトリックスをセルに変換しなければならないことを知っていますが、dlmwriteを使用してセルを保存するのに問題があります。ここMatlabの行列にヘッダーを追加する

私は現在持っている行列である:

0   0   0 
0.0454 0.0105 0.0105 
0.0907 0.0066 0.0068 
0.1814 0.0038 0.0049 
0.3629 0.0034 0.0040 
0.7258 0.0029 0.0023 
1.4515 0.0002 0.0007 
2.9030 0.0003 0.0005 

これは私が欲しいものである:

tau  TOL Adev FOL Adev 
0.0454 0.0105 0.0105 
0.0907 0.0066 0.0068 
0.1814 0.0038 0.0049 
0.3629 0.0034 0.0040 
0.7258 0.0029 0.0023 
1.4515 0.0002 0.0007 
2.9030 0.0003 0.0005 

マトリックス(最初の行のゼロを有する3、7)SaveDataを呼ばれます。

私はheader = ['tau'、 'TOL Adev'、 'FOL Adev']を割り当てようとしました。出力= {ヘッダ; saveData};私はdlmwrite( 'filename'、出力、 '\ t')の使い方を理解できません。

ありがとうございました! -Alex

+0

[cell2matを使用して文字列のベクトル(列ラベル)で数値の行列を連結する問題の可能性のある複製](http://stackoverflow.com/questions/6538756/problem-concatenating-a-文字列ベクトルの列の数の行列) – Amro

+0

@Amro、私はそれを使用して私の問題の大部分を把握することができました。しかし、私はまだかなり簡単な質問があります。あなたのリンクでは、dlmwrite( 'outputData'、saveData、 '-append')が使用されます。残念ながら、これはカンマで区切られたファイルを作成します。私は '\ t'はタブ区切りを指定する文字列であることを知っていますが、 '-append'が使用されているので使用できません。何か提案はありますか? –

+2

@Alex Nichols - [DLMWRITE](http://www.mathworks.com/help/techdoc/ref/dlmwrite.html)では、 '-append'パラメータの後にプロパティと値のペアがあり、これらを使用して区切り文字を定義できます、例えば'dlmwrite( 'outputData'、saveData、 '-append'、 '区切り文字'、 '\ t')'です。 –

答えて

3

怠け者で、マトリックスが大きすぎない場合は、データをデータセットにしてから書き出すことができます。あなたの行列が大きければ、Amroが与えたリンクを見ることをお勧めします。メモデータセットは、Statistics Toolboxの関数です。

ds = dataset({rand(10,3) 'a' 'b' 'c'}) 
export(ds, 'file', 'foo.txt', 'delim', '\t'); 
+0

それは完全に機能しました。私の行列は非常に小さく(7,3)、私は怠け者だと思いました! :Pありがとう、-Alex –

1

まず、このコード(ヘッダ= [ 'タウ'、 'TOL ADEV'、 'FOL ADEV'];)あなたの文字列を連結するので、セルを使用します。

@Amroコードは良いですが、出力はかなり(例のように)したい場合は、この関数のように、自分自身を実行する必要があります。

function writeWithHeader(fname,header,data) 
% Write data with headers 
% 
% fname: filename 
% header: cell of row titles 
% data: matrix of data 

f = fopen(fname,'w'); 

%Write the header: 
fprintf(f,'%-10s\t',header{1:end-1}); 
fprintf(f,'%-10s\n',header{end}); 

%Write the data: 
for m = 1:size(data,1) 
    fprintf(f,'%-10.4f\t',data(m,1:end-1)); 
    fprintf(f,'%-10.4f\n',data(m,end)); 
end 

fclose(f); 

あなただけでプレイする必要がありますfprintf形式の文字列...

+0

私はリッチCのメソッドを使用しましたが、あなたの時間のためにあまりにもありがとう! –

関連する問題