2011-12-10 178 views
1

我是Matlab的新手,所以我會很感謝你的幫助!我有一些數據,看起來像這樣:如何將行和列標題添加到Matlab矩陣?

 word1 word2 word3 word4 word5 
word1 1.2 3.5 4.1 2.1 3.6 
word2 5.1 4.2 3.7 6.3 5.9 
word3 8.3 4.6 5.5 9.1 5.3 
word4 7.1 8.2 2.1 1.7 4.3 
word5 2.4 2.5 3.2 6.8 9.2 

,我想創建一個三維圖,其中x是列維度,y是行維度和z是矩陣的數量。我想使用plot(x,y,z)和pcolor(x,y,z)。

我該如何在Matlab中構造它?我可以創建一個數字矩陣並以某種方式將標題添加到它嗎?我需要細胞基質嗎?

PS:我需要這些詞,因爲我希望能夠在索引到特定位置時檢索它們。

預先感謝您!

回答

2

如果您有統計工具箱,則可以使用dataset對象來表示具有列和行名稱的數據。如果沒有,可以使用單元格數組來表示行/列名,但索引會更難。例如,

M = {'', 'c1', 'c2', 'c3'; 'r1', 1, 2, 3; 'r2', 5, 6, 7; 'r3', 2, 4, 5} 

如果要混合在相同的數據容器(可變)字符串和數值,使用單元陣列是最常見的方式。不過,我會盡量保持這些獨立。例如,你可以有:

colNames = {'c1', 'c2', 'c3'} 
rowNames = {'r1', 'r2', 'r3'} 
data = rand(3,3) % A random matrix with 3 rows and 3 columns. 

如果你想繪製給定的,比方說,「C1」和「R3」數據點,你可以編寫

i = find(strcmp(rowNames, 'r3')) % Row index 
j = find(strcmp(colNames, 'c1')) % Column index 
plot3(i, j, data(i,j)) % Plot the data at 'c1' and 'r3' location 

但同樣,這是也是一種使用數字數據的複雜方式。基於行/列名稱繪圖而非行/列索引更難。

順便說一句,plot(x,y,z)不是一個有效的命令。對於曲線的3D繪圖,您應該使用plot3命令。

+0

謝謝!這真的很有幫助! – Thea

+0

@Thea現在最好使用'table'對象,因爲MathWorks將'dataset' [out](http://www.mathworks.com/help/stats/dataset.html) – EBH