次のコードは、あなたが望むことを行います(ベクターの要素数がこれのエントリ数よりも1少ないv
限り、任意の値を選択しました):v
dateS
dateS = [
'2004-09-02 06:00:00'
'2004-09-02 07:30:00'
'2004-09-02 12:00:00'
'2004-09-02 18:00:00'
'2004-09-02 19:30:00'
'2004-09-03 00:00:00'
'2004-09-03 05:30:00'
'2004-09-03 06:00:00'];
% "stations":
v = [6 5 4 3 5 6 4];
dn = datenum(dateS);
df = diff(dn)'./v;
newDates = [];
for ii = 1:numel(v)
newDates = [newDates dn(ii) + (0:v(ii))*df(ii)];
end
newStrings = datestr(newDates, 'yyyy-mm-dd HH:MM:SS');
配列newStrings
には次のものが含まれます。たとえば、1 回目と 2 回目の間隔が 15 分の 6 つのセグメントに分割されていることがわかります。
2004-09-02 06:00:00
2004-09-02 06:15:00
2004-09-02 06:30:00
2004-09-02 06:45:00
2004-09-02 07:00:00
2004-09-02 07:15:00
2004-09-02 07:30:00
2004-09-02 08:24:00
2004-09-02 09:18:00
2004-09-02 10:12:00
2004-09-02 11:06:00
2004-09-02 12:00:00
2004-09-02 13:30:00
2004-09-02 15:00:00
2004-09-02 16:30:00
2004-09-02 18:00:00
2004-09-02 18:30:00
2004-09-02 19:00:00
2004-09-02 19:30:00
2004-09-02 20:24:00
2004-09-02 21:18:00
2004-09-02 22:12:00
2004-09-02 23:06:00
2004-09-03 00:00:00
2004-09-03 00:55:00
2004-09-03 01:50:00
2004-09-03 02:45:00
2004-09-03 03:40:00
2004-09-03 04:35:00
2004-09-03 05:30:00
2004-09-03 05:37:30
2004-09-03 05:45:00
2004-09-03 05:52:30
このコードは、いくつかの概念に依存しています。
- 日付は、文字列または
datenum
. 組み込み関数を使用してそれらの間を行き来します
- 日付/時刻を数値として取得すると、簡単に補間できます
- 関数を使用して、
diff
連続する時間の差を見つけます
- 私はコードを「ベクトル化」しようとはしません。あなたは効率的なコードを求めていませんでした。このような例では、
for
ループの明快さがすべてに勝っています。