Main Content

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Prognostizieren Sie Gezeitentiefen mithilfe von ThingSpeak -Daten

Dieses Beispiel zeigt, wie die Gezeitentiefe in der Ockway Bay mithilfe von in einem ThingSpeak™ -Kanal gespeicherten Daten vorhergesagt wird. Die Vorhersage von Gezeitentiefen 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 Ockway Bay Echtzeit-Gezeitenmesser

Der 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 Gezeitentiefendaten. Lesen Sie die Daten mit der Funktion thingSpeakRead aus Kanal 50289 an einem bestimmten Tag, zum Beispiel dem 1. 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 Datenmittelwert 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 Versatz 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                         
                                       

Prognostizieren Sie die Gezeitentiefe

Verwenden Sie die Funktion forecast , um die Gezeitentiefe für den nächsten Tag vorherzusagen. Legen Sie die Anzahl der Stichproben der Vorhersagedaten 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. Führen Sie vor dem Plotten einen erneuten Trend der Daten durch.

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

Zeichnen Sie die prognostizierte Reaktion auf

Zeichnen Sie die gemessenen Daten zusammen mit den prognostizierten Gezeitendaten auf. Zeichnen Sie außerdem die eine 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 einer Standardabweichung der Unsicherheitsgrenzen.

Siehe auch

Funktionen

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