2011-12-10 1706 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