MATLAB を使用した時系列データの前処理
本リファレンスでは、よくあるユースケースを紹介していますが、すべてを掲載しているわけではありません。
Timetable
時系列データの整理・処理を目的として設計された MATLAB のデータ型。
Timetable の構成要素
tt = timetable(times, var1, var2, ... ,varN);
(すべての変数は、行数が同じでなければなりません。)
tt = table2timetable(t);
(「t」に含まれる最初の datetime または duration の変数が、行時間となります。)
Timetable の操作
データへのアクセス
これらは同じ配列を返します
新規変数の追加
tt.newVar = zeros(height(tt),1);
変数名の変更
tt.properties.VariableNames = newNames;
(名前は有効な MATLAB 識別子でなければなりません)
ヒント: matlab.lang.makevalidname を使用して、無効となる可能性のある名前から有効な名前を作成します。
Retime を使用したデータの再サンプリング
tt = retime(tt,newtimes,method);
method は、リタイミング後の欠損値を埋める際に使用され、synchronize と同じオプションを使用できます (「Timetable の統合」を参照)。
データクリーニング
データの平滑化
B = smoothdata(A,method);
次の手法を用いた、ノイズを含むデータの平滑化:
'movmean','movmedian','gaussian', 'lowess','loess','rlowess', 'rloess','sgolay'
外れ値の検出
TF = isoutlier(A,method);
次の手法を用いた、外れ値の特定:
'median','mean','quartiles', 'grubbs','gesd'
Timetable の統合
複数の timetable を共通の時間ベクトルに同期させます。
tt = synchronize(tt1,tt2,...,ttN);
同期を行うと、データポイントの欠損 (変数が測定されなかった時刻) が発生しがちです。synchronize では、データを調整して欠損部分を埋める方法が複数サポートされています。
補完: 'fillwithmissing','fillwithconstant'
内挿: 'linear','spline','pchip'
最近傍: 'previous', 'next','nearest'
集計: 'mean','min','max',@func,...
ビッグデータ
tall 配列を使用すると、メモリに読み込むには大きすぎるデータに対しても MATLAB 関数を適用できます。
「tall」timetable の作成:
% データを指すデータストアを作成 %
ds = datastore('*.csv');
% データストアから tall table を作成 %
t = tall(ds);
% timetable に変換
tt = table2timetable(t);