【发布时间】:2013-11-29 04:40:47
【问题描述】:
我正在尝试绘制一个以 44100 赫兹的速率收集的时间序列。我想在 x 轴上显示时间(以秒为单位)和日期。
假设我有一分钟的数据,即 2646001 个数据点,为简单起见,假设所有数据点都是 1:
y=repmat(1,2646001,1);
我通过将开始日期和结束日期转换为序列日期数字来创建一个日期数字向量,然后创建一个从第一个时间数字到最后一个时间数字的向量,速率为 44100 hz:
StartTimeNum = datenum(2013,11,12,23,00,0);
EndTimeNum = datenum(2013,11,12,23,01,0);
T = EndTimeNum-StartTimeNum;
TimeNum = StartTimeNum:(T/length(y)):EndTimeNum;
然后我定义我希望日期字符串的格式,并将时间数字向量转换为时间字符串。
FormatOut = 'dd/mm/yy, HH:MM:SS.FFF';
TimeStr= datestr(TimeNum, FormatOut);
但现在 TimeStr 是 ,而不是 Matlab 不允许我用作 x 轴输入的 。
在另一次尝试中,我找到了完美的时间序列类 (http://www.mathworks.co.uk/help/matlab/ref/timeseries.plot.html),但由于我的数据是 44100 hz,我不确定如何定义单位 (ts1.TimeInfo.Units),通常是描述为“天”、“小时”或“秒”,但不是以赫兹为单位...
有没有办法解决这个问题?
谢谢
【问题讨论】:
-
提示一下,MATLAB 有一个
ones命令,可以更快地完成您使用repmat所做的工作。 -
是的,你说得对,只是我当时没有想到。
标签: matlab plot time-series