0

我有一个时间向量(格式 h、min、sec、msec)。

TIME_=
[120844.950000000
120853.870000000
120854.120000000
120854.370000000
120854.620000000
120854.860000000
120855.100000000
120859.980000000
120900.220000000
120900.490000000

.
.
.
121024.420000000
];

现在我想让它统一

TIME_NEW=[STARTTIME: INCREMENT:ENDTIME ]; % INCREMENT=0.2sec;

我看到 matlab 中有可用的功能setuniformtime

我希望有喜欢

TIME_NEW= setuniformtime(TIME_(:,1),'StartTime',TIME_(1,1),'EndTime',TIME_(end,1),'Interval',0.2);

但是我没有这个matlab版本。有什么帮助吗?

我的时间格式有问题

ith element

TIME_NEW= [ 120859.980000000 , 120859.98000000+0.2 , 120860.18 ]

现在应该是120860.18-->120900.18.

4

2 回答 2

1

听起来问题的根源在于,对于时间值,您使用的数值不符合正常的 base-10(或 base-anything)规则。如果您想继续使用这种格式,您应该做的是
1) 转换为以秒为单位的时间(或仅在常规编号系统中的某个其他单位)
2) 以秒为单位创建统一向量(或其他单位)
3) 转换回到你的其他格式。

要将您的格式转换为秒,您可以执行以下操作:

#% format = hhmmss.msec
TIME_     = 120859.98 #% and others if you want
HOURS = floor(TIME_/10000);
MINS  = floor(mod(TIME_,10000) / 100 );
SECS  = mod(TIME_,100); #% keep the milliseconds part too
TIME_IN_S = HOURS*3600 + MINS*60 + SECS #% convert hours/mins/secs to seconds

您已经知道如何进行间距。剩下的就是转换回原始格式。

HOURS_PLACE = floor(TIME_IN_S/3600) * 10000;
MINS_PLACE  = floor(mod(TIME_IN_S,3600),60) * 100;
SECS_PLACE  = mod(TIME_IN_S,60);
UNIFORM_TIME = HOURS_PLACE + MINS_PLACE + SECS_PLACE;

这应该可以消除秒位置大于 60 等的“问题”。

于 2012-06-18T00:25:33.020 回答
0

您已经或多或少地写下了答案:

time_new = [time(1):0.2:time(end)];

当然,time(end)输出向量中很可能不会出现 的值。

于 2012-06-17T19:57:50.847 回答