我有一张表,其中包含" 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
等作为值。
答案 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);