Main Content

不規則にサンプリングされたデータの正則化

この例では、不規則にサンプリングされたデータを正則化して、観測値の時間間隔を一定にする方法を説明します。ThingSpeak™ チャネルから読み取った、不規則性を除去するデータのタイムスタンプを更新してから、データをチャネルに書き込みます。ネットワーク レイテンシやハードウェアのリセットにより発生した観測データのタイムスタンプの変動は、データの事前処理や解析のアルゴリズムに影響を与えることがあります。多くのアルゴリズムでは、正常に動作するためには規則的にサンプリングされたデータが必要です。

気象計チャネルからのデータの読み取り

ThingSpeak チャネル 12397 には、マサチューセッツ州ネイティックにある MathWorks® 気象計からのデータが含まれています。データは 1 分ごとに収集されます。チャネルのフィールド 4 には気温データが含まれます。不規則にサンプリングされたデータをチェックするには、関数 thingSpeakRead を使用してチャネル 12397 から気温データを読み取ります。

data = thingSpeakRead(12397,'NumMin',60,'Fields',4,'outputFormat','timetable');

不規則にサンプリングされたデータのチェック

チャネル 12397 から読み取った過去 60 分のデータが timetable として格納されています。関数 isregular を使用して、チャネル データが一様に分布しているかどうかチェックします。データが一様に分布していない場合、対象の期間に対応する等間隔の時間ベクトルを生成します。startTimestopTime、および観測値の数を指定して linspace を使用し、新しい時間ベクトルを生成します。

regularFlag = isregular(data,'Time');

if ~regularFlag
    startTime = data.Timestamps(1);
    stopTime  = data.Timestamps(end);
    newTimeVector = linspace(startTime,stopTime,height(data)); 
    data.Timestamps = newTimeVector;
end

ThingSpeak へのデータの送信

関数 thingSpeakWrite を使用して、処理したデータを ThingSpeak チャネルに送信します。

% Change the channelID and the writeAPIKey to send data to your channel.
channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID,data,'WriteKey',writeAPIKey);

参考

| |