首页 文章

如何在一个绘图轴上的刻度标签可以在MATLAB中相乘?

提问于
浏览
0

我目前正在尝试在Matlab中绘制“好看的”轴 . 这些值是每20ms采样一次的样本 . 所以在X轴上,我想在ms中有时间 . 我绘制数据的一般代码非常简单:

plot(1:size( data.matrix,1), data.matrix(:,1),'b');

到目前为止,我已经能够在此轴上正确显示样本编号:代码:

set(gca,'XTick',(1:size(data.matrix,1))*20);

结果(a):

enter image description here

在给定的示例中,样本数等于184,这使得:

time = 184 * 20ms = 3680ms

因为更改XTick值没有做太多改变,所以我测试了XTickLabel属性:

码:

set(gca,'XTickLabel',ceil(linspace(0,size(data.matrix,1)*20,10)));

结果(b):

enter image description here

码:

set(gca,'XTickLabel',0:ceil((size(data.matrix,1)*20)/10):size(data.matrix,1)*20);

结果(c):

enter image description here

正如您所看到的,结果并不是最糟糕的结果 . 但这不是我想要实现的目标 . 我的目标是拥有这样的 Value 观:

enter image description here

所以它只是首先绘制(结果a)X轴乘以20 .

有人可以告诉我如何实现这一目标吗?

2 回答

  • 1

    你能做到吗?

    set(gca,'XTickLabel',(1:size(data.matrix,1))*20*20);
    
  • 2

    当你使用:

    plot(1:size( data.matrix,1), data.matrix(:,1),'b');
    

    第一个参数 1:size( data.matrix,1) 创建一个表示数据点索引的连续整数向量 . 有两件事是错的:

    1)您不需要指定它 . 仅使用 Y 数据调用的Matlab plot 函数将自动创建此向量并使用它来绘制数据 .

    2)这些索引代表数据在数组中的位置,它们没有物理意义(例如你的情况的“时间”) .

    解决方案是创建一个合适的'时间'向量并将其作为第一个参数发送到绘图函数 . 通过这种方式,Matlab将负责刻度管理,您无需使用手动xtick设置进行调整 .

    在下面的示例中查看执行此操作的两种方法,一切都将清晰:

    %// build a simple index "X" vector (as you were doing)
    x_index = 1:size(data.matrix,1) ;
    
    %// build a properly scaled time vector
    timeInterval = 20 ; % in milliseconds
    x_time = ( 0:size(data.matrix,1)-1 ) * timeInterval ;
    
    plot( x_index , data.matrix(:,1) ) %// this will do like in your example
    plot( x_time  , data.matrix(:,1) ) %// this will do what you want
    

相关问题