我有几百个整数测量。他们每天都在测量。我知道第一次测量是在332019年进行的。我没有任何与每次测量明确相关的日期。 我想在y轴上绘制这些值,在x轴上绘制连续的日期。 我还想绘制这些测量值的子集.例如,从662019到11112019,最好只提供初始开始日期和两个子集日期。
像这样的东西应该工作(我在Octave中试过,但也应该在MATLAB中工作)。
data = randi(100,50,1); % some random data
start_date = datenum('03/03/2019','dd/mm/yyyy');
dates = start_date + (1:length(data));
% Plot data
figure
plot(dates,data)
datetick('dd/mm')
% Plot subset of the data
dates_start = datenum('16/03/2019','dd/mm/yyyy'); % change to your actual start date
dates_end = datenum('05/04/2019','dd/mm/yyyy'); % change to your actual end date
dates_subset = dates(dates>=dates_start & dates <=dates_end);
data_subset = data(dates>=dates_start & dates <=dates_end);
figure
plot(dates_subset,data_subset)
datetick('dd/mm')
这将产生以下图谱。
你可以创建一个日期时间的向量,并将其作为x轴。查看 日期和时间算术 在MATLAB中。
要创建时间矢量,只需在MATLAB中添加一个 duration
(小时)至您的初始日期
% number of samples/data/dates
NumSmpl = 100;
DateVec = datetime(2019,3,3,12,0,0) + duration((1:NumSmpl)*24,0,0).'; % I prefer to have vectors rather than arrays, which is why I transpose it here
现在绘制您的数据
% assuming this is your signal
Sig = 1:NumSmpl;
subplot(2,2,1:2) % activate first row
plot(DateVec,Sig)
subplot(2,2,3) % bottom left
plot(DateVec,Sig)
% set axes limits
xlim([DateVec(3),DateVec(10)])
subplot(2,2,4) % bottom right
% plot only a fraction of the data
lg = DateVec > datetime(2019,3,6) & DateVec < datetime(2019,3,13);
plot(DateVec(lg),Sig(lg))
我采用了两种不同的方式来展示部分情节。一种是通过使用 xlim
和另一个通过使用逻辑索引。