我有一个时间向量(格式为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.
答案 0 :(得分:1)
听起来问题的根源在于,对于时间值,您使用的数值不符合正常的基数为10(或基本任意)规则。如果你想继续使用这种格式,你应该做的是什么
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等的“问题”
答案 1 :(得分:0)
你已经或多或少地写了答案:
time_new = [time(1):0.2:time(end)];
当然,time(end)
的值很可能不会出现在输出向量中。