如何将行和列标题添加到Matlab矩阵?

时间:2011-12-10 02:31:46

标签: matlab graph matrix

我是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

我想创建一个3D图形,其中x是列维度,y是行维度,z是矩阵中的数字。我想使用plot(x,y,z)和pcolor(x,y,z)。

如何在Matlab中构建它?我可以创建一个数字矩阵,并以某种方式将标题附加到它?我需要细胞基质吗?

PS:我需要这些单词,因为我希望能够在索引到特定位置时检索它们。

提前谢谢!

1 个答案:

答案 0 :(得分: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命令。