Contenido principal

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

predict

Predecir la salida del modelo identificado con K pasos de anticipación

Descripción

Este comando predict calcula la salida de K pasos adelante de un modelo identificado utilizando datos de entrada-salida medidos. Para identificar el modelo, primero se recopilan todos los datos de entrada y salida y luego se estiman los parámetros del modelo fuera de línea. Para realizar una estimación del estado en línea de un sistema no lineal utilizando datos en tiempo real, utilice el comando predict para filtros de Kalman extendidos y unscented.

yp = predict(sys,data,K) predice la salida de un modelo identificado sys, K avanza utilizando los datos de entrada-salida medidos.

El comando predict predice la respuesta de salida durante el lapso de tiempo de los datos medidos. Por el contrario, forecast realiza predicciones sobre el futuro en un rango de tiempo más allá del último instante de los datos medidos. Utilice predict para validar sys durante el lapso de tiempo de los datos medidos.

data puede ser un horario, un par de matrices de entrada/salida separadas por comas o un objeto iddata.

ejemplo

yp = predict(sys,data,K,opt) utiliza el conjunto de opciones opt para especificar opciones de predicción adicionales, como el manejo de condiciones iniciales y compensaciones de datos.

ejemplo

[yp,ic,sys_pred] = predict(___) también devuelve los valores estimados para las condiciones iniciales ic y un modelo predictor sys_pred. Utilice esta sintaxis con cualquiera de las combinaciones de argumentos de entrada anteriores.

ejemplo

predict(sys,data,K,___) grafica la salida prevista. Úselo con cualquiera de las combinaciones de argumentos de entrada anteriores. Para cambiar las opciones de visualización en el gráfico, haga clic derecho en el gráfico para acceder al menú contextual. Para obtener más detalles sobre el menú, consulte Sugerencias .

También puede trazar la respuesta del modelo previsto utilizando el comando compare. El comando compare compara los resultados de la predicción con los datos observados y muestra un ajuste cuantitativo.

predict(sys,Linespec,data,K,___) utiliza Linespec para especificar el tipo de línea, el símbolo del marcador y el color.

predict(sys1,...,sysN,data,K,___) traza los resultados previstos para múltiples modelos identificados. predict elige automáticamente colores y estilos de línea.

predict(sys1,Linespec1,...,sysN,LinespecN,data,K,___) utiliza el tipo de línea, el símbolo de marcador y el color especificados para cada modelo.

ejemplo

Ejemplos

contraer todo

Simular datos de series de tiempo.

init_sys = idpoly([1 -0.99],[],[1 -1 0.2]);
opt = simOptions('AddNoise',true);
u = iddata([],zeros(400,0),1);
data = sim(init_sys,u,opt);

data es un objeto iddata que contiene los datos de respuesta simulada de un modelo de serie temporal.

Estime un modelo ARMAX utilizando data como datos de estimación.

na = 1;
nb = 2;
sys = armax(data(1:200),[na nb]);

Predecir la salida del modelo utilizando un horizonte de predicción de 4.

K = 4;
yp = predict(sys,data,K);

yp es un objeto iddata. La salida prevista se devuelve en la propiedad OutputData del objeto.

Compare los resultados de datos previstos y estimados.

plot(data(201:400),yp(201:400));
legend('Estimation data','Predicted data');

Figure contains an axes object. The axes object with title y1 contains 2 objects of type line. These objects represent Estimation data, Predicted data.

Alternativamente, para trazar la respuesta prevista y los datos de estimación, utilice compare(sys,data,K) .

Cargue los datos de la estimación.

load sdata1 tt1;
data = tt1;

Estimar un modelo ARX de orden [2 2 1].

sys1 = arx(data,[2 2 1]);

Estimar una función de transferencia con 2 polos.

 sys2 = tfest(data,2);

Cree un conjunto de opciones predict para especificar condiciones iniciales cero para la predicción.

opt = predictOptions('InitialCondition','z');

Grafique los resultados previstos para los modelos estimados. Utilice el conjunto de opciones de predicción especificado, opt, y especifique el horizonte de predicción como 10. Especifique estilos de línea para trazar la salida prevista de cada sistema.

predict(sys1,'r--',sys2,'b',data,10,opt);

Figure contains an axes object. The axes object with ylabel y contains 2 objects of type line. These objects represent Validation data (y), sys1, sys2.

Para cambiar las opciones de visualización, haga clic derecho en el gráfico para acceder al menú contextual. Por ejemplo, para ver los datos de estimación, seleccione Mostrar datos de validación en el menú contextual. Para ver el error de predicción, seleccione Gráfico de error de predicción.

También puede trazar la respuesta prevista utilizando el comando compare. Para ello, primero cree un conjunto de opciones para compare para especificar el uso de condiciones iniciales cero.

opt = compareOptions('InitialCondition','z');
compare(data,sys1,'r--',sys2,'b',10,opt);

Figure contains an axes object. The axes object with ylabel y contains 3 objects of type line. These objects represent Validation data (y), sys1: 54.31%, sys2: 70.57%.

Utilice datos de estimación para estimar un modelo y luego calcule la salida del modelo previsto y el modelo predictor utilizando el comando predict. Simular el modelo predictor para reproducir el resultado previsto.

Estimación de datos de carga.

load sdata3 umat3 ymat3 Ts

Estimar un modelo polinomial a partir de los datos.

sys = polyest(umat3,ymat3,[2 2 2 0 0 1]);

Predecir la respuesta del sistema utilizando el horizonte de predicción 4.

K = 4;
[yp,ic,sysp] = predict(sys,umat3,ymat3,K);

yp es la respuesta del modelo prevista, ic contiene las condiciones iniciales estimadas y sysp es el modelo predictor.

Simular el modelo predictor con entradas [data.OutputData,data.InputData] y condiciones iniciales ic.

opt = simOptions;
opt.InitialCondition = ic;
ys = sim(sysp,[ymat3,umat3],opt);

Grafique los resultados previstos y simulados.

ns = size(ys,1);
t = [1:Ts:ns]';

plot(t,yp,'b',t,ys,'.r');
legend('Predicted Output','Simulated Output')

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Predicted Output, Simulated Output.

Incorpore las condiciones iniciales que obtuvo previamente en su predicción del modelo.

Cargue los datos.

load iddata1ic z1i

Especifique la opción de estimación ARMAX para estimar el estado inicial.

estimOpt = armaxOptions('InitialCondition','estimate');

Estima un modelo ARMAX y devuelve un objeto initialCondition ic que encapsula las condiciones iniciales en forma de espacio de estados.

na = 2;
nb = 2;
nc = 2;
nk = 1;
[sys,ic] = armax(z1i,[na nb nc nk],estimOpt);

Especifique las condiciones iniciales para la predicción.

predictOpt = predictOptions('InitialCondition',ic);

Predecir el modelo y obtener la respuesta del modelo. Grafique la respuesta y con los datos medidos.

y = predict(sys,z1i,predictOpt);
plot(z1i,y)
legend('Measured Data','Predicted Response')

Figure contains 2 axes objects. Axes object 1 with title y1 contains 2 objects of type line. These objects represent Measured Data, Predicted Response. Axes object 2 with title u1 contains an object of type line. This object represents Measured Data.

Las respuestas medidas y previstas muestran una buena concordancia al inicio de la predicción.

Realizar predicciones de modelos utilizando datos históricos para especificar las condiciones iniciales. Primero se predice utilizando el comando predict y se especifican los datos históricos utilizando el conjunto de opciones predictOptions. Luego, reproduce la respuesta prevista asignando manualmente los datos históricos a los estados iniciales.

Cargue un conjunto de datos de dos entradas y una salida.

load iddata7 z7

Identifique un modelo de espacio de estados de quinto orden utilizando los datos.

sys = n4sid(z7,5);

Divida el conjunto de datos en dos partes.

zA = z7(1:15);
zB = z7(16:end);

Supongamos que desea calcular la predicción con 10 pasos de anticipación de la respuesta del sistema identificado para los datos zB. Para las condiciones iniciales, utilice los valores de señal en zA como registro histórico. Es decir, los valores de entrada y salida para el tiempo inmediatamente anterior a los datos en zB.

IO = struct('Input',zA.InputData,'Output',zA.OutputData);
opt = predictOptions('InitialCondition',IO);

Genere la predicción de 10 pasos por adelantado para los datos zB utilizando las condiciones iniciales especificadas y predict.

[yp,x0,Predictor] = predict(sys,zB,10,opt);

yp es la respuesta del modelo previsto, x0 son los estados iniciales correspondientes al modelo predictor Predictor. Puedes simular Predictor utilizando x0 como condiciones iniciales para reproducir yp.OutputData.

Ahora reproduzca la salida asignando manualmente los datos históricos a los estados iniciales. Para ello, minimice los errores de predicción de 1 paso durante el lapso de tiempo de zA.

x0est = data2state(sys,zA);

x0est contiene los valores de los cinco estados de sys en el instante de tiempo inmediatamente posterior a la muestra de datos más reciente en zA.

El Predictor tiene más estados que el sistema original debido al horizonte de predicción de 10 pasos. Especifique los estados adicionales inducidos por el horizonte a valores iniciales cero y luego agregue x0est.

x0Predictor = zeros(order(Predictor),1);
x0Predictor(end-4:end) = x0est;

Simule el predictor utilizando [zB.OutputData,zB.InputData] como señal de entrada y x0Predictor como condiciones iniciales.

uData = [zB.OutputData,zB.InputData]; % signals required for prediction
[ysim,t,xsim] = lsim(Predictor,uData,[],x0Predictor);

Grafique la salida prevista del comando predict yp.OutputData y los resultados calculados manualmente ysim.

plot(t,yp.OutputData,t,ysim, '.')

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

ysim es lo mismo que yp.OutputData.

Argumentos de entrada

contraer todo

Modelo identificado cuya salida se desea predecir, especificada como una de las siguientes:

Si un modelo no está disponible, estime sys a partir de data usando comandos como ar, armax, tfest, nlarx y ssest.

Datos de entrada/salida muestreados uniformemente medidos, especificados como timetable, un par de matrices de entrada/salida numéricas separadas por comas o un objeto iddata. La especificación de data depende del tipo de datos.

Calendario

Especifique data como un timetable que utiliza un vector de tiempo espaciado regularmente. que contiene variables que representan canales de entrada y salida.

Par de matrices separadas por comas

Especifique data como un par de matrices separadas por comas que contienen los valores de señal del dominio del tiempo de entrada y salida u,y. Especifique la matriz de entrada con las dimensiones Ns por Nu y la matriz de salida con las dimensiones Ns por Ny, donde Nu es el número de entradas, Ny es el número de salidas y Ns es el número de muestras.

Para datos de series de tiempo, especifique [],y.

Utilice datos basados en matrices sólo para modelos de tiempo discreto.

Objeto de datos

Especifique los datos como un objeto iddata que contiene los datos de entrada y salida. Para datos de series de tiempo (sin entradas), especifique data como un objeto iddata sin entradas.

Para obtener más información sobre cómo trabajar con tipos de datos de estimación, consulte Data Domains and Data Types in System Identification Toolbox.

Horizonte de predicción, especificado como uno de los siguientes:

  • Entero positivo: la salida yp se calcula K pasos hacia el futuro, donde K representa un múltiplo del tiempo de muestra data.

    La salida en el instante de tiempo t se calcula utilizando salidas medidas previamente hasta el instante de tiempo t-K y entradas hasta el instante de tiempo t.

  • Inf — No se utilizan salidas anteriores en el cálculo y predict devuelve el mismo resultado que la simulación utilizando el comando sim.

Para los modelos de error de salida, no hay diferencia entre las predicciones paso a paso K y la salida simulada. Esto se debe a que los modelos de error de salida solo utilizan entradas pasadas para predecir salidas futuras.

Nota

Para una validación cuidadosa del modelo, una predicción de un paso por delante (K = 1) generalmente no es una buena prueba para validar el modelo sys en el lapso de tiempo de los datos medidos. Incluso el trivial predictor que va un paso por delante, y^(t)=y(t1), puede dar buenas predicciones. Por lo tanto, un modelo pobre puede parecer adecuado para una predicción de datos con un paso de anticipación que tiene un tiempo de muestra pequeño. La predicción con K = Inf, que es lo mismo que realizar una simulación con el comando sim, puede generar resultados divergentes porque se enfatizan las perturbaciones de baja frecuencia en los datos, especialmente para los modelos con integración. Utilice un valor K entre 1 y Inf para capturar el comportamiento de frecuencia media de los datos medidos.

Opciones de predicción, especificadas como un conjunto de opciones predictOptions. Utilice el conjunto de opciones para especificar opciones de predicción, como el manejo de las condiciones iniciales y las compensaciones de datos.

Estilo de línea, marcador y color, especificados como un vector de caracteres. Por ejemplo, 'b' o 'b+:'.

Para obtener más información sobre la configuración de Linespec, consulte el argumento Linespec de plot.

Argumentos de salida

contraer todo

Respuesta de salida prevista, devuelta en el mismo formato que data.

Cuando data es un objeto iddata, la propiedad OutputData de yp almacena los valores de la salida prevista. La variable de tiempo toma valores en el rango representado por data.SamplingInstants.

La salida en el instante de tiempo t se calcula utilizando salidas medidas previamente hasta el instante de tiempo t-K y entradas hasta el instante de tiempo t. En otras palabras, la respuesta prevista en la unidad de tiempo r de los datos medidos se almacena en la muestra r+K-1 de yp. Téngase en cuenta que en la unidad de tiempo r, se supone que las entradas futuras u(r+1), u(r+2),..., u(r+K) necesarias para la predicción son conocidas. Para datos de múltiples experimentos, yp contiene un conjunto de datos previstos para cada experimento. El lapso de tiempo de los resultados previstos coincide con el de los datos observados.

Cuando se especifica sys utilizando un modelo idnlhw o idnlgrey, yp es lo mismo que la respuesta simulada calculada utilizando data.InputData como entrada.

Condiciones iniciales estimadas correspondientes al modelo predictor sys_pred, devueltas como un vector columna, un objeto initialCondition o un arreglo de celdas.

  • Si sys es una función de transferencia lineal o un modelo polinomial, entonces ic es un objeto initialCondition. El objeto initialCondition encapsula la respuesta libre de sys, en forma de espacio de estados, con el vector de estado inicial correspondiente.

  • Si sys es cualquier otro tipo de modelo dinámico lineal o no lineal, entonces ic es un vector de estado inicial, devuelto como un vector columna de tamaño igual al número de estados.

  • Si data contiene datos de múltiples experimentos, entonces ic es un arreglo de celdas de tamaño Ne, donde Ne es el número de experimentos.

Para reproducir los resultados de la predicción, puede simular sys_pred utilizando ic como condiciones iniciales. Para ver un ejemplo, consulte Reproducir resultados de predicción mediante simulación.

Si sys es un modelo idnlarx, ic se devuelve vacío.

Modelo predictor, devuelto como un modelo de sistema dinámico. Para datos de múltiples experimentos, sys_pred es un arreglo de modelos, con una entrada para cada experimento. Puede utilizar el modelo predictor sys_pred y las condiciones iniciales estimadas ic para reproducir los resultados de la predicción:

  • Si sys es un modelo lineal, el modelo predictor se devuelve como un modelo del mismo tipo que sys o como una versión de espacio de estados del modelo (idss). Para reproducir los resultados de la predicción, simule sys_pred utilizando [data.OutputData data.InputData] como entrada y ic como condiciones iniciales. La salida de la simulación es la misma que la salida prevista yp.OutputData. Para ver un ejemplo, consulte Reproducir resultados de predicción mediante simulación.

  • Cuando sys es un modelo de caja gris no lineal (idnlgrey) o un modelo Hammerstein-Wiener (idnlhw), el componente de ruido del modelo es trivial y, por lo tanto, el modelo predictor es el mismo que el modelo. sys_pred se devuelve vacío. Para reproducir los resultados de la predicción, simule sys utilizando las condiciones iniciales ic. Para obtener una definición de los estados de los modelos idnlhw, consulte Definition of idnlhw States.

  • Si sys es un modelo ARX no lineal (idnlarx), sys_pred y ic se devuelven vacíos. No es posible reproducir los resultados de la predicción mediante simulación.

Para datos de tiempo discreto que son datos del dominio del tiempo o del dominio de la frecuencia con un tiempo de muestra Ts mayor que cero, sys_pred es un modelo de tiempo discreto, incluso si sys es un modelo de tiempo continuo.

Sugerencias

  • Al hacer clic derecho en el gráfico del resultado previsto, se abre el menú contextual, donde puede acceder a las siguientes opciones:

    • Systems — Seleccione sistemas para ver la respuesta prevista. De forma predeterminada, se grafica la respuesta de todos los sistemas.

    • Data Experiment — Solo para datos de experimentos múltiples. Alternar entre datos de diferentes experimentos.

    • Characteristics — Ver las siguientes características de los datos:

      • Peak Value — Ver el valor máximo absoluto de los datos. Aplicable únicamente a datos del dominio del tiempo.

      • Peak Response — Ver la respuesta máxima de los datos. Aplicable únicamente a datos de respuesta en frecuencia.

      • Mean Value — Ver el valor medio de los datos. Aplicable únicamente a datos del dominio del tiempo.

    • Show — Solo para datos de dominio de frecuencia y de respuesta en frecuencia.

      • Magnitude — Ver la magnitud de la respuesta de frecuencia del sistema.

      • Phase — Ver la fase de la respuesta de frecuencia del sistema.

    • Show Validation Data — Gráfico de datos utilizados para predecir la respuesta del modelo.

    • I/O Grouping — Para conjuntos de datos que contienen más de un canal de entrada o salida. Seleccione la agrupación de canales de entrada y salida en el gráfico.

      • None — Traza los canales de entrada y salida en sus propios ejes separados.

      • All — Agrupa todos los canales de entrada juntos y todos los canales de salida juntos.

    • I/O Selector — Para conjuntos de datos que contienen más de un canal de entrada o salida. Seleccione un subconjunto de los canales de entrada y salida para graficar. De forma predeterminada, se trazan todos los canales de salida.

    • Grid — Agrega cuadrículas al gráfico.

    • Normalize — Normaliza la escala y de todos los datos del gráfico.

    • Full View — Regresar a la vista completa. De forma predeterminada, el gráfico se escala a la vista completa.

    • Prediction Horizon — Establezca el horizonte de predicción o elija simulación.

    • Initial Condition — Especifica el manejo de las condiciones iniciales. No aplicable para datos de respuesta en frecuencia.

      Especifique como uno de los siguientes:

      • Estimate — Tratar las condiciones iniciales como parámetros de estimación.

      • Zero — Establece todas las condiciones iniciales en cero.

      • Absorb delays and estimate — Absorbe los retrasos distintos de cero en los coeficientes del modelo y trata las condiciones iniciales como parámetros de estimación. Utilice esta opción únicamente para modelos de tiempo discreto.

    • Predicted Response Plot — Grafica la respuesta del modelo previsto. De forma predeterminada, se muestra el gráfico de respuesta.

    • Prediction Error Plot — Grafica el error entre la respuesta del modelo y los datos de predicción.

    • Properties — Abre el cuadro de diálogo Editor de propiedades para personalizar los atributos del gráfico.

Historial de versiones

Introducido antes de R2006a

expandir todo