Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um das englische Original zu sehen.

Gezeitentiefen mit ThingSpeak-Daten vorhersagen

Dieses Beispiel zeigt, wie die Gezeitentiefe in der Ockway Bay mithilfe von in einem ThingSpeak™-Kanal gespeicherten Daten vorhergesagt wird. Die Vorhersage der Gezeitentiefe ist von entscheidender Bedeutung: Wenn Sie die Wassertiefe nicht kennen, kann Ihr Boot in einer flachen Bucht leicht im Schlamm stecken bleiben.

Lesen Sie Daten vom Echtzeit-Gezeitenmesser der Ockway Bay

ThingSpeak ™ Kanal 50289 enthält Daten zur Gezeitentiefe in der Ockway Bay. Die Daten werden alle 5 Minuten erfasst. Feld 1 des Kanals enthält Daten zur Gezeitentiefe. Lesen Sie die Daten mit der Funktion thingSpeakRead aus Kanal 50289 an einem bestimmten Tag, beispielsweise dem 01. Juli 2016.

startDate = datetime('July 1, 2016 12:01:00 AM');
endDate = datetime('July 2, 2016 12:02:00 AM');
dateRange = startDate:endDate;
data = thingSpeakRead(50289,'DateRange',dateRange,'Fields',1);

Passen Sie ein AR-Modell an die Daten an

Verwenden Sie die Funktion iddata, um ein IDData-Objekt der Gezeitentiefendaten zu erstellen. Verwenden Sie detrend für die Daten, um den Mittelwert der Daten auf Null zu setzen. Da die Gezeitentiefe mit der Zeit variiert, verwenden Sie die Funktion ar, um ein zeitdiskretes autoregressives Modell an die Daten anzupassen. Erfassen Sie den Offset vor der Trendbereinigung und passen Sie dann ein AR-Modell an, um das System darzustellen.

sampleTime = 5;
IDdata = iddata(data,[],sampleTime,'OutputName',{'Tidal Depth'},'TimeUnit','minutes')
trend = getTrend(IDdata,0);
IDdata = detrend(IDdata,0);
modelOrder = 8;
sys = ar(IDdata,modelOrder);
IDdata =

Time domain data set with 288 samples.
Sample time: 5 minutes                 
                                       
Outputs           Unit (if specified)  
   Tidal Depth                         
                                       

Vorhersage der Gezeitentiefe

Verwenden Sie die Funktion forecast, um die Gezeitentiefe für den nächsten Tag vorherzusagen. Legen Sie die Anzahl der Stichproben der Prognosedaten auf 288 fest, da die gemessenen Gezeitentiefendaten alle 5 Minuten aktualisiert werden. yf ist die prognostizierte Modellantwort und yf_sd ist die Standardabweichung der Ausgabe. Überprüfen Sie den Trend der Daten vor dem Plotten.

numSamples = 288;
[yf,x0,sysf,yf_sd,x,x_sd] = forecast(sys,IDdata,numSamples);
IDdata = retrend(IDdata,trend);
yf = retrend(yf,trend);

Plotten Sie die prognostizierte Antwort

Stellen Sie die gemessenen Daten zusammen mit den prognostizierten Gezeitendaten grafisch dar. Plotten Sie auch die Standardabweichung der Unsicherheiten des prognostizierten Modells auf.

figure;
UpperBound = iddata(yf.OutputData+1*yf_sd,[],yf.Ts,'Tstart',yf.Tstart,'TimeUnit','minutes');
LowerBound = iddata(yf.OutputData-1*yf_sd,[],yf.Ts,'Tstart',yf.Tstart,'TimeUnit','minutes');
plot(IDdata(:,:,[]),'r',yf(:,:,[]),'b');
hold on
plot(UpperBound,'k--',LowerBound,'k--');
legend({'measured','forecasted','1 sd uncertainty'},'Location','best');
xlabel('Time');
ylabel('Tidal depth (inches)');
title('Measured and Forecasted Tidal Wave Depths');

Dieses Diagramm zeigt die gemessene und prognostizierte Systemreaktion zusammen mit den Unsicherheitsgrenzen einer Standardabweichung.

Siehe auch

Funktionen

  • | (System Identification Toolbox) | (System Identification Toolbox) | (System Identification Toolbox) | (System Identification Toolbox) | (System Identification Toolbox) | (System Identification Toolbox)