如何在Matlab中标记两个向量?

时间:2010-02-11 08:14:19

标签: matlab matrix plot vector

我有一个2列矩阵(称为M,我使用Matlab的plot命令(plot(M))可视化为两个向量。我有两个问题:

  1. 我想在图上标记矢量。
  2. 我想在图上标记矩阵的每一行(即每个矢量分量)。
  3. 我将如何做这些事情?

3 个答案:

答案 0 :(得分:3)

一个例子:

M = cumsum(rand(10,2) - 0.5);
x = 1:size(M,1);
plot(x, M(:,1), 'b.-', x, M(:,2), 'g.-')
legend('M1', 'M2')
for i=x
    text(i+0.1, M(i,1), sprintf('%.2f', M(i,1)), 'FontSize',7, 'Color','b');
    text(i+0.1, M(i,2), sprintf('%.2f', M(i,2)), 'FontSize',7, 'Color','g');
end

plot

或者,您可以使用:

datacursormode()

这将使用户只需point and click on points即可查看数据标签。

答案 1 :(得分:1)

您可能需要对此进行调整以准确获取标签的位置,但这样的方法可以解决问题。

M = [1 2; 3 4; 5 6]
plot(M)
nrows = size(M, 1);
ncols = size(M, 2);
x = repmat(nrows - .3, 1, ncols);
y = M(end, :) - .3;
labels = cellstr([repmat('Col', ncols, 1), num2str((1:ncols)')]);
text(x, y, labels)

答案 2 :(得分:0)

您可以使用以下功能标记每个轴:

xlabel('label')
ylabel('label')

这些也可以采用单元格参数,其中每一行都是一个新行。这对于展示单位很方便。标记图上的每个点都可以这样做:

for i=1:length(M)
    text(M(i,1),M(i,2),'Label Text')
end

标签文本也可以是一个字符串变量,您可以使用sprintf编辑该字符串变量,并为每个点创建特殊字符串。