如何在MatLab中绘制全年每个月特定日期的图形

ygya80vv  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(295)

我有两个变量,分别称为xy。每个都有24*365值。24表示一天中的小时数,365表示一年中的天数。我正在通过以下命令绘制第12小时和第25天的值:

plot(x(12:12,25), y(12:12,25))

现在,我想在一整年的每25天做同样的事情。比如1月25日、2月25日、3月25日。我不关心小时的价值,但我不知道如何建立它的逻辑,因为每个月都有不同的天数。

rur96b6h

rur96b6h1#

您可以通过获取每个月25日的datenum值并减去该年1月1日的datenum来生成一年中的第几天数字。

dayIdx = datenum(2022,1:12,25) - datenum(2022,1,1) + 1;

然后,只需将其用作列索引

plot(x(12,dayIdx), y(12,dayIdx))

以上2022年的选择是武断的,只要你选择一个不是闰年的年份,就可以得到365天的年份。

xwbd5t1u

xwbd5t1u2#

datetime数据类型对于这种类型的工作来说非常棒。

%Make a vector of datetimes
ts = (  datetime(2001,1,1,0,0,0):hours(1):datetime(2001,12,31,023,0,0)  )';

%Find the datetimes which are on the 25th day of the month, and the 12th
%hour of the day
mask =  (day(ts) == 25)  &  (hour(ts) == 12)  ;

%Confirm
ts(mask)

结果如下所示。
(您可能希望在任务中使用mask变量本身。有时,您希望在逻辑语句上使用find来获取索引列表。)

ans = 
  12×1 datetime array
   25-Jan-2001 12:00:00
   25-Feb-2001 12:00:00
   25-Mar-2001 12:00:00
   25-Apr-2001 12:00:00
   25-May-2001 12:00:00
   25-Jun-2001 12:00:00
   25-Jul-2001 12:00:00
   25-Aug-2001 12:00:00
   25-Sep-2001 12:00:00
   25-Oct-2001 12:00:00
   25-Nov-2001 12:00:00
   25-Dec-2001 12:00:00

相关问题