不規則にサンプリングされたデータの正則化
この例では、不規則にサンプリングされたデータを正則化して、観測値の時間間隔を一定にする方法を説明します。ThingSpeak™ チャネルから読み取った、不規則性を除去するデータのタイムスタンプを更新してから、データをチャネルに書き込みます。ネットワーク レイテンシやハードウェアのリセットにより発生した観測データのタイムスタンプの変動は、データの事前処理や解析のアルゴリズムに影響を与えることがあります。多くのアルゴリズムでは、正常に動作するためには規則的にサンプリングされたデータが必要です。
気象計チャネルからのデータの読み取り
ThingSpeak チャネル 12397 には、マサチューセッツ州ネイティックにある MathWorks® 気象計からのデータが含まれています。データは 1 分ごとに収集されます。チャネルのフィールド 4 には気温データが含まれます。不規則にサンプリングされたデータをチェックするには、関数 thingSpeakRead
を使用してチャネル 12397 から気温データを読み取ります。
data = thingSpeakRead(12397,'NumMin',60,'Fields',4,'outputFormat','timetable');
不規則にサンプリングされたデータのチェック
チャネル 12397 から読み取った過去 60 分のデータが timetable として格納されています。関数 isregular
を使用して、チャネル データが一様に分布しているかどうかチェックします。データが一様に分布していない場合、対象の期間に対応する等間隔の時間ベクトルを生成します。startTime
、stopTime
、および観測値の数を指定して 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);