matlab - 从datenum数字格式获取月/年格式的日期

时间:2016-04-04 12:51:58

标签: matlab

我有一张表,其中包含" double"中的年份和月份。格式。

然后我为表中的每个条目创建一个datenum:

for j=1:number_of_rows
dates_returns_all_period_monthly(j,10)=datenum([year,month,1]);
end

首先,有没有办法按月计算日期而无需在datenum命令上设置日期?

其次,之前的命令为我提供了731947

等值

然后我希望以日期格式获取日期,

我正在尝试运行以下命令:

dates_returns_all_period_monthly(j,11)=datestr(dates_returns_all_period_monthly(j,10));

但我收到错误"Assignment has more non-singleton rhs dimensions than non-singleton subscripts"

我该如何解决这个问题?理想情况下,我希望有类似于2004年1月,2005年2月等等。或2004年2月1日,02/2004,类似的东西,因为后来我想用x轴上的日期绘图,我不想&# 39; t想要731947等作为值。

1 个答案:

答案 0 :(得分:1)

这里的问题是你试图将字符串输出放入矩阵数组中。这不起作用:它会尝试将字符串转换为数字数组,并且您的索引将告诉它尝试将您的数字数组放入单个矩阵位置,从而导致您看到的错误。

如果您希望存储它们,您需要做的是创建一个单元数组,该数组在每个元素位置内存储任意数据,但需要不同的语法才能访问:

text_dates = cell(1,number_of_rows);
for j=1:number_of_rows
    text_dates{j}=datestr(dates_returns_all_period_monthly(j,10));
end

然而,您无法直接将这些作为plot命令的一部分使用 - Matlab需要输入才能绘制为数字,因此字符串将无效。你想要做的是使用你的数值创建你的绘图,然后访问当前轴属性(你可以使用gca命令得到这个)并将`XTickLabel'属性更改为你想要的字符串,例如:

plot(dates_returns_all_period_monthly(:,10),whatever_your_y_values_are);
ax=gca;
set(gca,'XTickLabels',text_dates);