【发布时间】:2019-06-18 12:45:00
【问题描述】:
我有一个数组,其中包含格式为 yyyymmdd 的多个日期,存储为 50x1 双精度。我正在尝试提取年、月和日,以便可以使用 datenum 为每个日期分配一个序列号。
索引单个日期,转换使用 str2num,然后索引和提取适当的值可以正常工作,但是当我尝试遍历日期列表时它不起作用 - 仅返回数字 2 的变体。
dates = [20180910; 20180920; 20181012; 20181027; 20181103; 20181130; 20181225];
% version1
datesnums=num2str(dates); % dates is a list of dates stored as
integers
for i=1:length(datesnums)
pullyy=str2num(datesnums(1:4));
pullmm=str2num(datesnums(5:6));
pulldd=str2num(datesnums(7:8));
end
还有
%version2
datesnums=num2str(dates,'%d')
for i = 1:length(datesnums)
dd=datenum(str2num(datesnums(i(1:4))),str2num(datesnums(i(5:6))),
str2num(datesnums(i(7:8))));
end
我正在尝试生成一个新数组,它只是输入日期的序列号。在显示的示例中,我只获得单个整数值,我知道这是因为循环不正确,并且我收到错误提示“索引超过数组元素的数量 (1)”。对于版本 1。当我让它成功循环遍历所有内容时,对于每个不正确的日期,输出只是 '2222','22,'22'。我究竟做错了什么?我需要合并一个元胞数组吗?
【问题讨论】:
-
请编辑您的问题并提供MCVE。
-
首先考虑将日期放入字符串中,然后将它们存储在元胞数组中,而不是整数向量中