曲线拟合工具箱中的时间向量
Time vector in curve fitting toolbox
我想使用曲线拟合工具箱来模拟我的一天,它由两个向量组成,时间和度量。这是我的数据文件的屏幕截图(我将仅使用时间和 DOWN)。
如何在工具箱中输入时间向量作为我的 x 向量?它目前是日期时间类型的向量,当我 select 我的变量时,我无法在我的列表中找到它,使用什么格式是正确的?
这是我的excel样本(我稍微减少了观察量,但这不会影响最终结果):
DATE TIME DOWN
--------- ---------- -----
1/27/2018 8:00:03 PM 5,375
1/27/2018 8:00:06 PM 5,375
1/27/2018 8:00:10 PM 5,375
1/27/2018 8:00:13 PM 5,375
1/27/2018 8:00:17 PM 5,375
1/27/2018 8:00:20 PM 4,855
1/27/2018 8:00:27 PM 4,855
1/27/2018 8:00:31 PM 4,855
1/27/2018 8:00:35 PM 4,855
1/27/2018 8:00:38 PM 4,855
我通常更喜欢将 readtable 函数与经过调整的导入选项一起使用,如下所示:
opts = detectImportOptions('data.xlsx');
opts.VariableTypes = {'datetime' 'datetime' 'double'};
data = readtable('data.xlsx',opts);
data
变量将被解析如下:
DATE (datetime) TIME (datetime) DOWN (double)
---------------------- ---------------------- ----------------
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:03' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:06' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:10' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:13' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:17' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:20' 4,85500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:27' 4,85500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:31' 4,85500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:35' 4,85500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:38' 4,85500000000000
如您所见,当时间未定义时默认为00:00:00
;日期也是如此,默认为 31-Dec-1899
。由于参考日期是静态的并且永远不会改变,我认为最好的办法是合并 table 的前两列,以便生成连贯的 datenum
值以用作 X Data
(datetime
变量不能在Curve Fitting Toolbox中使用,你必须将它们转换成序列格式):
[y,m,d] = ymd(data.DATE);
[h,mn,s] = hms(data.TIME);
x = datenum(y,m,d,h,mn,s)
x =
737087.833368056
737087.833402778
737087.833449074
737087.833483796
737087.833530093
737087.833564815
737087.833645833
737087.83369213
737087.833738426
737087.833773148
在 cftool
中用作 Y Data
的值可以直接从 data
列中提取 DOWN
:
y = data.DOWN;
我想使用曲线拟合工具箱来模拟我的一天,它由两个向量组成,时间和度量。这是我的数据文件的屏幕截图(我将仅使用时间和 DOWN)。
如何在工具箱中输入时间向量作为我的 x 向量?它目前是日期时间类型的向量,当我 select 我的变量时,我无法在我的列表中找到它,使用什么格式是正确的?
这是我的excel样本(我稍微减少了观察量,但这不会影响最终结果):
DATE TIME DOWN
--------- ---------- -----
1/27/2018 8:00:03 PM 5,375
1/27/2018 8:00:06 PM 5,375
1/27/2018 8:00:10 PM 5,375
1/27/2018 8:00:13 PM 5,375
1/27/2018 8:00:17 PM 5,375
1/27/2018 8:00:20 PM 4,855
1/27/2018 8:00:27 PM 4,855
1/27/2018 8:00:31 PM 4,855
1/27/2018 8:00:35 PM 4,855
1/27/2018 8:00:38 PM 4,855
我通常更喜欢将 readtable 函数与经过调整的导入选项一起使用,如下所示:
opts = detectImportOptions('data.xlsx');
opts.VariableTypes = {'datetime' 'datetime' 'double'};
data = readtable('data.xlsx',opts);
data
变量将被解析如下:
DATE (datetime) TIME (datetime) DOWN (double)
---------------------- ---------------------- ----------------
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:03' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:06' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:10' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:13' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:17' 5,37500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:20' 4,85500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:27' 4,85500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:31' 4,85500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:35' 4,85500000000000
'27-Jan-2018 00:00:00' '31-Dec-1899 20:00:38' 4,85500000000000
如您所见,当时间未定义时默认为00:00:00
;日期也是如此,默认为 31-Dec-1899
。由于参考日期是静态的并且永远不会改变,我认为最好的办法是合并 table 的前两列,以便生成连贯的 datenum
值以用作 X Data
(datetime
变量不能在Curve Fitting Toolbox中使用,你必须将它们转换成序列格式):
[y,m,d] = ymd(data.DATE);
[h,mn,s] = hms(data.TIME);
x = datenum(y,m,d,h,mn,s)
x =
737087.833368056
737087.833402778
737087.833449074
737087.833483796
737087.833530093
737087.833564815
737087.833645833
737087.83369213
737087.833738426
737087.833773148
在 cftool
中用作 Y Data
的值可以直接从 data
列中提取 DOWN
:
y = data.DOWN;