作为格式化时间(分钟)的分钟绘图
问题描述:
我想绘制一些关于分钟的数据,而不是以Matlab的格式化时间秒,即min.sec
。作为格式化时间(分钟)的分钟绘图
我有收到每个样本的实时数据流,它的时间也以秒为单位发送。然后,我会根据时间绘制它们。现在,由于我的会议时间长达15分钟左右,所以我不能在时间上进行阴谋。因此我想根据时间绘制它(min.sec
)。我试着将收到的时间除以60,但是这给了我100分钟而不是60分钟的分钟(0.9999而不是0.59分钟增量)。我如何转换它,以便我能够在几分钟内就时间进行绘图?
这里是我的意思是由0.99分钟而不是0.59分钟。正常分钟有60个部门没有100
编辑: 我试图m7913d的建议,这里是我得到了什么。
第一I相对于绘制信号以时间(秒)而不改变
-
的I加入
蜱(A正常datetick('x', 'mm:ss');
的情节(XTICK格式并不在Matlab 2015B支持)plot(t,v)
)
的屏幕截图在几秒钟的时间为至多80秒s,当翻译成分钟时,它应该给我1分20秒作为最大x轴限制。但这种情况并非如此。我试图构建一个t矢量(即像t=0:seconds(3):minutes(3)
),但我无法将其链接到我的秒矢量,它将随着从串口收到新样本而不断更新。 感谢
答
您可以使用xtickformat
如下指定你的X标签所需的格式:
% generate a random signal (in seconds)
t = 0:5:15*60;
y = rand(size(t));
plot(seconds(t),y) % plot your signal, making it explicit that the t is expressed in seconds
xtickformat('mm:ss') % specify the desired format of the x labels
请注意,我用的seconds
方法,它返回一个duration
对象,以指示Matlab的那t
是以秒表示。
上述脚本的输出是(右侧的图像是左图像的缩放版本):
预R2016b
人们可以使用datetime
代替xtickformat
如下:
datetimes = datetime(0,0,0,0,0,t); % convert seconds to datetime
plot(datetimes,y)
datetick('x', 'MM:SS'); % set the x tick format (Note that you should now use capital M and S in the format string
xlim([min(datetimes) max(datetimes)])
编辑:阅读错误的问题。你可以请发布给你100个细分而不是60个代码吗?只需将时间向量设置为在60秒后递增:'t = 0:60:(60 * 15)'。 –
我的时间向量不是由我设置的,它是从一个微控制器记录下来的,它持续发送每个样本,并以秒为单位。这就是为什么我不能设置t = 0:60:(60 * 15)。此外,持续时间最长为15分钟,但也可能较短。我目前的做法是将每次收到的时间读数除以60,但这给了我每分钟0.99分钟的增量分数(我将更新显示该图的问题) – Isra
这是绘图视图---您的样本不是实际上排队与该网格(所以你的代码是正确的,但视图不是你想要的)。您只需更改'XTick'轴属性以将刻度线放在需要的位置,并且网格将与该线相符。例如。 '设置(GCA, 'XTICK',启动:增量:结束);'。 –