次の形式の時系列があります。
time data value
733408.33 x1
733409.21 x2
733409.56 x3
etc..
データは、2008年1月1日から2010年12月31日まで実行されます。データを月単位の長さの列に分割したいと思います。
たとえば、最初の列(2008年1月)は、対応するデータ値で構成されます。
(first 01-Jan-2008 data value):(data value immediately preceding the first 01-Feb-2008 value)
次に、2番目の列(2008年2月):
(first 01-Feb-2008 data value):(data value immediately preceding the first 01-Mar-2008 value)
等...
私が考えていたが、まとめる方法がわからないいくつかのアイデア:
- すべてのシリアル時刻番号(例:733408.33)を次の文字列に変換します
datestr
strmatch('01-January-2008',DatesInChars)
2008年1月1日に対応する行のインデックスを検索するために使用します- トリッキーな部分(?)
TransformedData(:,i) = OriginalData(start:end)
:?end = strmatch(1) - 1
およびstart = 1
。次にstart
、ループの最後でに変更し、strmatch(1)
ステップ2を再度実行して、次の「開始インデックス」を見つけ、end
「新規」に変更しstrmatch(1)-1
ますか?
速度を最適化するといいでしょう。約200万回サンプリングされたデータに適用します。
ありがとう!