Main Content

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

Previsione della profondità delle maree utilizzando i dati ThingSpeak

Questo esempio mostra come prevedere la profondità della marea a Ockway Bay utilizzando i dati memorizzati in un canale ThingSpeak™ . Prevedere la profondità delle maree è fondamentale: se non sei consapevole della profondità dell'acqua, la tua barca può facilmente rimanere bloccata nel fango in una baia poco profonda.

Leggi i dati dal mareografo in tempo reale di Ockway Bay

Il canale ThingSpeak™ 50289 contiene dati sulla profondità delle maree a Ockway Bay. I dati vengono raccolti una volta ogni 5 minuti. Il campo 1 del canale contiene i dati sulla profondità delle maree. Leggere i dati utilizzando la funzione thingSpeakRead dal canale 50289 in un giorno particolare, ad esempio 1 luglio 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);

Adattare un modello AR ai dati

Utilizzare la funzione iddata per creare un oggetto iddata dei dati sulla profondità delle maree. Utilizzare detrend sui dati per rendere la media dei dati pari a zero. Poiché la profondità della marea varia nel tempo, utilizzare la funzione ar per adattare ai dati un modello autoregressivo a tempo discreto. Cattura l'offset prima della rimozione del trend e quindi adatta un modello AR per rappresentare il sistema.

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                         
                                       

Prevedere la profondità delle maree

Utilizza la funzione forecast per prevedere la profondità della marea per il giorno successivo. Impostare il numero di campioni dei dati di previsione su 288 poiché i dati sulla profondità di marea misurata vengono aggiornati una volta ogni 5 minuti. yf è la risposta del modello prevista e yf_sd è la deviazione standard dell'output. Eseguire nuovamente il trend dei dati prima di tracciarli.

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

Traccia la risposta prevista

Tracciare i dati misurati insieme ai dati di marea previsti. Tracciare anche la deviazione standard delle incertezze del modello previsto.

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');

Questo grafico mostra la risposta del sistema misurata e prevista insieme ai limiti di incertezza di una deviazione standard.

Vedi anche

Funzioni

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