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 に答える