このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
自己回帰モデルによる潮汐深度データの近似
この例では、 ThingSpeak™チャネル内のデータに自己回帰 (AR) モデルを適合させ、回帰パラメーターとその不確実性を計算する方法を示します。自己回帰モデルは、本質的に時間に依存するプロセスを表すために使用されます。
オックウェイ湾のリアルタイム潮汐ゲージからのデータの読み取り
ThingSpeakチャネル50289 には、オックウェイ湾の潮汐深に関するデータが含まれています。データは 5 分ごとに収集されます。チャネルの Field 1 には潮汐深度のデータが含まれています。
% Read the data using the |thingSpeakRead| function from channel 50289 on a particular day, for example, July 01, 2016.
startDate = datetime('July 1, 2016 12:01:00 AM'); endDate = datetime('July 2, 2016 12:01:00 AM'); dateRange = startDate:endDate; [data,timestamps] = thingSpeakRead(50289,'DateRange',dateRange,'Fields',1);
AR モデルによるデータの近似
iddata
関数を使用して、潮汐深さデータの iddata オブジェクトを作成します。detrend
を使用して、データの平均がゼロであることを確認します。
sampleTime = 5; IDdata = iddata(data,[],sampleTime,'OutputName',{'Tidal Depth'},'TimeUnit','minutes') IDdata = detrend(IDdata,0);
IDdata = Time domain data set with 288 samples. Sample time: 5 minutes Outputs Unit (if specified) Tidal Depth
モデルをデータに適合させる
潮汐深度は時間と共に変化するため、関数 ar
を使用して、離散時間の自己回帰モデルでデータを近似します。
modelOrder = 8; sys = ar(IDdata,modelOrder)
sys = Discrete-time AR model: A(z)y(t) = e(t) A(z) = 1 - 1.154 z^-1 - 0.1668 z^-2 + 0.2144 z^-3 + 0.2974 z^-4 - 0.4227 z^-5 + 0.1509 z^-6 - 0.1612 z^-7 + 0.2491 z^-8 Sample time: 5 minutes Parameterization: Polynomial orders: na=8 Number of free coefficients: 8 Use "polydata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using AR ('fb/now') on time domain data "IDdata". Fit to estimation data: 98.5% FPE: 0.04741, MSE: 0.04485
パラメーターの表示
関数 getpvec
を使用して、推定したパラメーターを、それらの不確かさと共に表示します。
[Parameters,Uncertainties] = getpvec(sys)
Parameters = -1.1543 -0.1668 0.2144 0.2974 -0.4227 0.1509 -0.1612 0.2491 Uncertainties = 0.0580 0.0918 0.0932 0.0918 0.0921 0.0970 0.0962 0.0647
出力には、推定された AR モデルパラメーターと、推定されたパラメーターの 1 つの標準偏差値が表示されます。
ThingSpeakへのパラメーターの書き込み
thingSpeakWrite
関数を使用して、フィールドごとに 1 つの値を含む値の配列をThingSpeakに書き込みます。データを 8 x 1 になるように転置します。channelID
とwriteAPIKey
を変更して、チャネルにデータを送信します。
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; response = thingSpeakWrite(channelID,'Values',Parameters','WriteKey',writeAPIKey)
response = struct with fields: Field1: '-1.154266029802091' Field2: '-0.1668388400729965' Field3: '0.2143807521019717' Field4: '0.2973816840220466' Field5: '-0.4226981725238166' Field6: '0.1509427726183032' Field7: '-0.1612303290788889' Field8: '0.2490548535561231' Latitude: [] Longitude: [] ChannelID: 17504 Created: 10-Jan-2019 15:10:41 LastEntryID: 20736 Altitude: []
参考
関数
thingSpeakRead
|iddata
(System Identification Toolbox) |detrend
(System Identification Toolbox) |ar
(System Identification Toolbox) |getpvec
(System Identification Toolbox)