このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
timetable の作成
この例では、timetable の作成と結合を行い、複数の timetable のデータを共通の時間ベクトルに合わせて調整する方法を示します。共通の時間ベクトルには、一方または両方の timetable の時間を含めたり、まったく新しい時間ベクトルを指定することができます。例では、異なる timetable に含まれる気象測定値の日次平均を計算して表示する方法を示します。
timetable は table の一種で、各行に時刻が関連付けられています。各変数の行数が同じであれば、データ型やサイズが異なる列方向のデータ変数を 1 つの timetable に格納できます。また、timetable には、データの結合、添字付け、調整を行うための、時間に固有の関数が用意されています。
ファイルからの timetable のインポート
大気質データと気象測定値を 2 つの異なる timetable に読み込みます。測定値の日付範囲は 2015 年 11 月 15 日から 2015 年 11 月 19 日までです。大気質データは屋内のセンサーから、気象測定値は屋外のセンサーから取得されています。
関数 readtimetable
を使用して、table から大気質データを読み取ります。出力は timetable です。
indoors = readtimetable('indoors.csv');
timetable は、関数 array2timetable
を使用して M 行 N 列の配列から作成したり、関数 timetable
を使用してワークスペース変数から作成することもできます。
indoors
の最初の 5 行を表示します。timetable の各行には、そのデータ行にラベルを付ける時間が含まれています。
indoors(1:5,:)
ans=5×2 timetable
Time Humidity AirQuality
___________________ ________ __________
2015-11-15 00:00:24 36 80
2015-11-15 01:13:35 36 80
2015-11-15 02:26:47 37 79
2015-11-15 03:39:59 37 82
2015-11-15 04:53:11 36 80
気象測定値を含む timetable を読み込みます。outdoors
の最初の 5 行を表示します。
load outdoors
outdoors(1:5,:)
ans=5×3 timetable
Time Humidity TemperatureF PressureHg
___________________ ________ ____________ __________
2015-11-15 00:00:24 49 51.3 29.61
2015-11-15 01:30:24 48.9 51.5 29.61
2015-11-15 03:00:24 48.9 51.5 29.61
2015-11-15 04:30:24 48.8 51.5 29.61
2015-11-15 06:00:24 48.7 51.5 29.6
timetable の同期
timetable indoors
と outdoors
には、屋内と屋外で別々の時間に得られた別々の測定値が含まれます。関数 synchronize
を使用して、すべてのデータを 1 つの timetable に結合します。
tt = synchronize(indoors,outdoors); tt(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:24 36 80 49 51.3 29.61
2015-11-15 01:13:35 36 80 NaN NaN NaN
2015-11-15 01:30:24 NaN NaN 48.9 51.5 29.61
2015-11-15 02:26:47 37 79 NaN NaN NaN
2015-11-15 03:00:24 NaN NaN 48.9 51.5 29.61
出力 timetable tt
には、両方の timetable からのすべての時間が含まれます。synchronize
は、tt
内に配置するデータ値がない場合に欠損データ インジケーターを配置します。両方の入力 timetable に Humidity
などの同じ名前の変数がある場合、synchronize
は両方の変数の名前を変更し、両方を出力 timetable に追加します。
timetable を再度同期して、欠損データ値を線形内挿で埋めます。
ttLinear = synchronize(indoors,outdoors,'union','linear'); ttLinear(1:5,:)
ans=5×5 timetable
Time Humidity_indoors AirQuality Humidity_outdoors TemperatureF PressureHg
___________________ ________________ __________ _________________ ____________ __________
2015-11-15 00:00:24 36 80 49 51.3 29.61
2015-11-15 01:13:35 36 80 48.919 51.463 29.61
2015-11-15 01:30:24 36.23 79.77 48.9 51.5 29.61
2015-11-15 02:26:47 37 79 48.9 51.5 29.61
2015-11-15 03:00:24 37 80.378 48.9 51.5 29.61
1 つの timetable 内のデータの調整
単一の timetable 内のデータを、新しい時間ベクトルに合わせて調整することもできます。関数 retime
を使用して、ttLinear
内の変数の 6 時間の平均値を計算します。データの調整後、いずれかの行に NaN
値が含まれる場合、関数 rmmissing
を使用して削除します。
tv = [datetime(2015,11,15):hours(6):datetime(2015,11,18)];
ttHourly = retime(ttLinear,tv,'mean');
ttHourly = rmmissing(ttHourly);
timetable データのプロット
ttHourly
内のデータを、timetable 内の各変数の平均値に正規化します。これらの測定値の日次平均値をプロットします。変数にアクセスするには timetable の Variables
プロパティを使用できます。ttHourly.Variables
は、ttHourly{:,:}
と同じ変数を返します。
ttMeanVars = ttHourly.Variables./mean(ttHourly.Variables); plot(ttHourly.Time,ttMeanVars); legend(ttHourly.Properties.VariableNames,'Interpreter','none'); xlabel('Time'); ylabel('Normalized Weather Measurements'); title('Mean Daily Weather Trends');
参考
timetable
| table2timetable
| synchronize
| retime
| timerange
| rmmissing