2011-08-16 77 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與第一行中的零)被稱爲保存數據。

我試過分配標題= ['tau','TOL Adev','FOL Adev'];和output = {header; saveData};但我無法弄清楚如何使用dlmwrite('filename',output,'\ t')。

非常感謝您的幫助! -Alex

+0

可能的重複[問題連接使用cell2mat的字符串(列標籤)向量的數字矩陣](http://stackoverflow.com/questions/6538756/problem-concatenatinga-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','delimiter','\ t')'。 –

回答

3

如果你感覺懶惰,而且矩陣不太大,可以將數據轉換爲數據集,然後導出它。如果你的矩陣很大,我建議你看看Amro給出的鏈接。注意數據集是統計工具箱中的一項功能。

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

完美運作。我的矩陣非常小(7,3),我想我很懶惰! :P謝謝,-Alex –

1

首先,這個代碼(標題= [ 'tau蛋白', '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

我用Rich C的方法,但非常感謝你的時間! –