【发布时间】:2017-05-06 13:57:39
【问题描述】:
我有一个日期时间数组,它突出显示函数“datepeak”的峰值,用于一年中的每一天。我使用日期时间数组“日期”和峰值位置的数组“位置”获得它。
t1 = datetime(year,1,1,0,0,0);
t2 = datetime(year,12,31,23,59,0);
date = t1:minutes(1):t2;
datepeak=date(position);
我需要获取第 1 天的 n 个峰值并将这个数组转置到矩阵的第一行,依此类推。 由于峰值的数量不是常数(最小 3 最大 4),我尝试像这样启动矩阵:
matrix=NaN(365,4)
然后我用这个双 for 循环覆盖每一行的 NaN:
for i=1:365
v=datepeak(day(datepeak,'dayofyear')==i);
for c=1:length(v)
matrix(i,c)=(v(c));
end
end
这个循环有效(我在峰值上尝试过),但使用 datetime 时出现错误。
这是一个粘贴示例:
year=2016;
position=[128 458 950];
t1 = datetime(year,1,1,0,0,0);
t2 = datetime(year,12,31,23,59,0);
date = t1:minutes(1):t2;
datepeak=date(position);
matrix=NaN(365,4);
for i=1:365
v=datepeak(day(datepeak,'dayofyear')==i);
for c=1:length(v)
matrix(i,c)=(v(c));
end
end
【问题讨论】:
-
你得到什么错误?
-
从日期时间转换为双精度时出现以下错误:未定义函数“双精度”用于“日期时间”类型的输入参数。要将日期时间转换为数值,首先减去日期时间原点,然后使用 SECONDS、MINUTES、HOURS、DAYS 或 YEARS 函数转换为数值。
-
从日期时间转换为双精度时出现以下错误:未定义函数“双精度”用于“日期时间”类型的输入参数。要将日期时间转换为数值,首先减去日期时间原点,然后使用 SECONDS、MINUTES、HOURS、DAYS 或 YEARS 函数转换为数值。
-
我认为是因为 NaN 矩阵需要双精度值
-
您绝对需要 365x4 阵列吗?包含 365 个元素的列表,每个元素都包含一天中的 3 个或 4 个峰值可以吗?