Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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 indoorsoutdoors には、屋内と屋外で別々の時間に得られた別々の測定値が含まれます。関数 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');

Figure contains an axes object. The axes object with title Mean Daily Weather Trends contains 5 objects of type line. These objects represent Humidity_indoors, AirQuality, Humidity_outdoors, TemperatureF, PressureHg.

参考

| | | | |

関連するトピック