Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la versión original en inglés.

Pronostique la profundidad de las mareas con los datos de ThingSpeak

Este ejemplo muestra cómo pronosticar la profundidad de la marea en Ockway Bay usando datos almacenados en un canal ThingSpeak™. Predecir la profundidad de las mareas es vital: si no conoce la profundidad del agua, su barco puede atascarse fácilmente en el lodo en una bahía poco profunda.

Leer datos del indicador de mareas en tiempo real de Ockway Bay

El canal 50289 de ThingSpeak™ contiene datos sobre la profundidad de las mareas en Ockway Bay. Los datos se recopilan una vez cada 5 minutos. El campo 1 del canal contiene datos de profundidad de marea. Leer los datos usando el thingSpeakRead función del canal 50289 en un día en particular, por ejemplo, 01 de julio de 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);

Ajuste un modelo AR a los datos

Utilizar el iddata función para crear un objeto iddata de los datos de profundidad de marea. Usar detrend en los datos para hacer que los datos sean cero. Dado que la profundidad de la marea varía con el tiempo, use el ar para ajustar un modelo autorregresivo de tiempo discreto a los datos. Capture el desplazamiento antes de eliminar la tendencia y luego ajuste un modelo AR para representar el 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                         
                                       

Pronostique la profundidad de la marea

Utilizar el forecast para pronosticar la profundidad de la marea para el día siguiente. Establezca el número de muestras de los datos de pronóstico en 288, ya que los datos de profundidad de marea medidos se actualizan una vez cada 5 minutos. yf es la respuesta pronosticada del modelo, y yf_sd es la desviación estándar de la salida. Vuelva a generar tendencias antes de trazar.

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

Trazar la respuesta pronosticada

Trazar los datos medidos junto con los datos de marea pronosticados. También grafique la desviación estándar de las incertidumbres del modelo pronosticado.

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

Esta gráfica muestra la respuesta del sistema medida y pronosticada junto con los límites de incertidumbre de una desviación estándar.

Consulte también

Funciones

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