我目前正在尝试在Matlab中绘制“好看的”轴 . 这些值是每20ms采样一次的样本 . 所以在X轴上,我想在ms中有时间 . 我绘制数据的一般代码非常简单:
plot(1:size( data.matrix,1), data.matrix(:,1),'b');
到目前为止,我已经能够在此轴上正确显示样本编号:代码:
set(gca,'XTick',(1:size(data.matrix,1))*20);
结果(a):
在给定的示例中,样本数等于184,这使得:
time = 184 * 20ms = 3680ms
因为更改XTick值没有做太多改变,所以我测试了XTickLabel属性:
码:
set(gca,'XTickLabel',ceil(linspace(0,size(data.matrix,1)*20,10)));
结果(b):
码:
set(gca,'XTickLabel',0:ceil((size(data.matrix,1)*20)/10):size(data.matrix,1)*20);
结果(c):
正如您所看到的,结果并不是最糟糕的结果 . 但这不是我想要实现的目标 . 我的目标是拥有这样的 Value 观:
所以它只是首先绘制(结果a)X轴乘以20 .
有人可以告诉我如何实现这一目标吗?
2 回答
你能做到吗?
当你使用:
第一个参数
1:size( data.matrix,1)
创建一个表示数据点索引的连续整数向量 . 有两件事是错的:1)您不需要指定它 . 仅使用
Y
数据调用的Matlabplot
函数将自动创建此向量并使用它来绘制数据 .2)这些索引代表数据在数组中的位置,它们没有物理意义(例如你的情况的“时间”) .
解决方案是创建一个合适的'时间'向量并将其作为第一个参数发送到绘图函数 . 通过这种方式,Matlab将负责刻度管理,您无需使用手动xtick设置进行调整 .
在下面的示例中查看执行此操作的两种方法,一切都将清晰: