Identificazione di modelli black-box non lineari utilizzando l’app System Identification
Introduzione
Obiettivi
Stimare e convalidare modelli non lineari da dati a ingresso singolo/uscita singola (SISO) per trovare quello che rappresenta meglio la dinamica del sistema.
Dopo aver completato questo tutorial, si sarà in grado di eseguire le seguenti attività utilizzando l’app System Identification:
Importare oggetti dati dall’area di lavoro MATLAB® nell’app.
Stimare e convalidare modelli non lineari dai dati.
Tracciare e analizzare il comportamento delle non linearità.
Descrizione dei dati
Questo tutorial utilizza il file di dati twotankdata.mat
, che contiene dati SISO nel dominio del tempo per un sistema con due serbatoi, mostrato nella figura seguente.
Sistema con due serbatoi
Nel sistema con due serbatoi, l’acqua scorre nel serbatoio 1 attraverso un tubo, defluisce nel serbatoio 2 e fuoriesce dal sistema attraverso un piccolo foro sul fondo del serbatoio 2. L’ingresso misurato u(t) al sistema è la tensione applicata alla pompa che alimenta l’acqua nel serbatoio 1 (in volt). L’uscita misurata y(t) è l’altezza dell’acqua nel serbatoio inferiore (in metri).
Sulla base della legge di Bernoulli che afferma che l’acqua che scorre attraverso un piccolo foro sul fondo del serbatoio dipende in modo non lineare dal livello dell’acqua nel serbatoio, si prevede che la relazione tra l’ingresso e l’uscita dei dati sia non lineare.
twotankdata.mat
include 3000 campioni con un tempo di campionamento di 0,2 s.
Cosa sono i modelli black-box non lineari?
Tipi di modelli black-box non lineari
Si possono stimare modelli black-box a tempo discreto non lineari per i dati nel dominio del tempo sia a uscita singola sia a uscita multipla. È possibile scegliere tra due tipi di strutture del modello black-box non lineare:
Modelli ARX non lineari
Modelli Hammerstein-Wiener
Nota
È possibile stimare i modelli black-box Hammerstein-Wiener solo da dati in ingresso/in uscita. Questi modelli non supportano i dati di serie temporale dove non è presente alcun ingresso.
Per ulteriori informazioni sulla stima dei modelli black-box non lineari, vedere Nonlinear Model Identification.
Che cos’è un modello ARX non lineare?
Un modello ARX non lineare è costituito da regressori del modello e da una funzione di uscita. La funzione di uscita contiene uno o più oggetti di mappatura, uno per ogni uscita del modello. Ogni oggetto di mappatura può includere una funzione lineare e una non lineare che agiscono sui regressori del modello per fornire l’uscita del modello e un offset fisso per tale uscita. Questo diagramma a blocchi rappresenta la struttura di un modello ARX non lineare a uscita singola, in uno scenario di simulazione.
Il software calcola l’uscita del modello ARX non lineare y in due fasi:
Calcola i valori del regressore dai valori in ingresso attuali e passati e dai dati in uscita passati.
Nel caso più semplice, i regressori sono ingressi e uscite ritardati, come u(t–1) e y(t–3). Questi tipi di regressori sono chiamati regressori lineari. I regressori lineari vengono specificati utilizzando l’oggetto
linearRegressor
. È inoltre possibile specificare i regressori lineari utilizzando gli ordini del modello ARX come un argomento in ingresso. Per ulteriori informazioni, vedere Nonlinear ARX Model Orders and Delay. Tuttavia, questo secondo approccio vincola l’insieme di regressori a regressori lineari con ritardi consecutivi. Per creare regressori polinomiali, utilizzare l’oggettopolynomialRegressor
. Per creare regressori periodici che contengono le funzioni seno e coseno delle variabili in ingresso e in uscita ritardate, utilizzare l’oggettoperiodicRegressor
. È inoltre possibile specificare regressori personalizzati, che sono funzioni non lineari di ingressi e uscite ritardati. Ad esempio, u(t–1)y(t–3) è un regressore personalizzato che moltiplica le istanze in ingresso e in uscita insieme. Specificare i regressori personalizzati utilizzando l’oggettocustomRegressor
.È possibile assegnare qualsiasi regressore come ingresso al blocco della funzione lineare della funzione di uscita, al blocco della funzione non lineare o a entrambi.
Mappa i regressori dell’uscita del modello utilizzando un blocco di funzione di uscita. Il blocco della funzione di uscita può includere più oggetti di mappatura lineari e non lineari, e blocchi di offset in parallelo. Ad esempio, si consideri la seguente equazione:
In questo caso, x è un vettore dei regressori e r è la media di x. è l’uscita del blocco della funzione lineare. rappresenta l’uscita del blocco della funzione non lineare. Q è una matrice di proiezione che rende i calcoli ben condizionati. d è un offset scalare che viene aggiunto alle uscite combinate dei blocchi lineari e non lineari. La forma esatta di F(x) dipende dalla scelta fatta per la funzione di uscita. È possibile fare una selezione tra gli oggetti di mappatura disponibili, come reti di partizione ad albero, reti wavelet e reti neurali multistrato. È inoltre possibile escludere il blocco della funzione lineare o non lineare dalla funzione di uscita.
Quando si stima un modello ARX non lineare, il software calcola i valori dei parametri del modello, come L, r, d, Q e altri parametri specificando g.
I modelli ARX non lineari risultanti sono oggetti idnlarx
che memorizzano tutti i dati del modello, inclusi i regressori e i parametri del modello della funzione di uscita. Per ulteriori informazioni su questi oggetti, vedere Nonlinear Model Structures.
Ch cos’è un modello Hammerstein-Wiener?
Questo diagramma a blocchi rappresenta la struttura di un modello Hammerstein-Wiener:
Dove,
f è una funzione non lineare che trasforma i dati in ingresso u(t) come w(t) = f(u(t)).
w(t), una variabile interna, è l’uscita del blocco Input Nonlinearity e ha la stessa dimensione di u(t).
B/F è una funzione di trasferimento lineare che trasforma w(t) come x(t) = (B/F)w(t).
x(t), una variabile interna, è l’uscita del blocco Linear e ha la stessa dimensione di y(t).
B e F sono simili ai polinomi in un modello lineare di errore in uscita. Per ulteriori informazioni sui modelli di errore in uscita, vedere What Are Polynomial Models?.
Per le uscite ny e gli ingressi nu, il blocco lineare è una matrice di funzione di trasferimento contenente le voci:
dove j =
1,2,...,ny
e i =1,2,...,nu
.h è una funzione non lineare che mappa l’uscita del blocco lineare x(t) all’uscita del sistema y(t) come y(t) = h(x(t)).
Considerando che f agisce sulla porta in ingresso del blocco lineare, questa funzione è chiamata non linearità in ingresso. Analogamente, considerando che h agisce sulla porta in uscita del blocco lineare, questa funzione è chiamata non linearità in uscita. Se il sistema contiene più ingressi e uscite, è necessario definire le funzioni f e h per ogni segnale in ingresso e in uscita. Non è necessario includere nella struttura del modello sia la non linearità in ingresso sia la non linearità in uscita. Quando un modello contiene esclusivamente la non linearità in ingresso f, è chiamato modello Hammerstein. Analogamente, quando il modello contiene esclusivamente la non linearità in uscita h, è chiamato modello Wiener.
Il software calcola l’uscita del modello Hammerstein-Wiener y in tre fasi:
Calcola w(t) = f(u(t)) dai dati in ingresso.
w(t) è un ingresso alla funzione di trasferimento lineare B/F.
La non linearità in ingresso è una funzione statica (senza memoria) in cui il valore dell’uscita in un dato momento t dipende solo dal valore in ingresso nell’istante t.
È possibile configurare la non linearità in ingresso come una rete sigmoidea, una rete a wavelet, una saturazione, una zona morta, una funzione lineare a tratti, un polinomio monodimensionale o una rete personalizzata. È inoltre possibile rimuovere la non linearità in ingresso.
Calcola l’uscita del blocco lineare utilizzando w(t) e le condizioni iniziali: x(t) = (B/F)w(t).
È possibile configurare il blocco lineare specificando gli ordini del numeratore B e del denominatore F.
Calcola l’uscita del modello trasformando l’uscita del blocco lineare x(t), utilizzando la funzione non lineare h come y(t) = h(x(t)).
Analogamente alla non linearità in ingresso, la non linearità in uscita è una funzione statica. È possibile configurare la non linearità in uscita allo stesso modo della non linearità in ingresso. È inoltre possibile rimuovere la non linearità in uscita, in modo che y(t) = x(t).
I modelli risultanti sono oggetti idnlhw
che memorizzano tutti i dati del modello, inclusi i parametri del modello e gli stimatori di non linearità. Per ulteriori informazioni su questi oggetti, vedere Nonlinear Model Structures.
Preparazione dei dati
Caricamento dei dati nell’area di lavoro MATLAB
Caricare i dati campione in twotankdata.mat
digitando il seguente comando nella Finestra di comando MATLAB:
load twotankdata
Questo comando carica le due variabili seguenti nel browser dell’area di lavoro MATLAB:
u
sono i dati in ingresso, corrispondenti alla tensione applicata alla pompa che alimenta l’acqua nel serbatoio 1 (in volt).y
sono i dati in uscita, corrispondenti all’altezza dell’acqua nel serbatoio 2 (in metri).
Creazione di oggetti iddata
Gli oggetti dati System Identification Toolbox™ inglobano sia i valori dei dati sia le proprietà dei dati in un’entità unica. È possibile utilizzare i comandi System Identification Toolbox per manipolare questi oggetti dati in modo conveniente come entità singole.
È necessario che i dati di campionamento siano già caricati nell’area di lavoro MATLAB, come descritto in Caricamento dei dati nell’area di lavoro MATLAB.
Utilizzare i seguenti comandi per creare due oggetti dati iddata
, ze
e zv
, dove ze
contiene i dati per la stima del modello e zv
contiene i dati per la convalida del modello. Ts
è il tempo di campionamento.
Ts = 0.2; % Sample time is 0.2 sec z = iddata(y,u,Ts); % First 1000 samples used for estimation ze = z(1:1000); % Remaining samples used for validation zv = z(1001:3000);
Per visualizzare le proprietà dell’oggetto iddata
, utilizzare il comando get
. Ad esempio:
get(ze)
il software MATLAB restituisce i seguenti valori e proprietà dei dati:
Domain: 'Time' Name: '' OutputData: [1000x1 double] y: 'Same as OutputData' OutputName: {'y1'} OutputUnit: {''} InputData: [1000x1 double] u: 'Same as InputData' InputName: {'u1'} InputUnit: {''} Period: Inf InterSample: 'zoh' Ts: 0.2000 Tstart: 0.2000 SamplingInstants: [1000x0 double] TimeUnit: 'seconds' ExperimentName: 'Exp1' Notes: {} UserData: []
Per modificare le proprietà dei dati, utilizzare la notazione col punto. Ad esempio, per assegnare i nomi ai canali e alle unità che etichettano gli assi del grafico, digitare la seguente sintassi nella finestra di comando MATLAB:
% Set time units to minutes ze.TimeUnit = 'sec'; % Set names of input channels ze.InputName = 'Voltage'; % Set units for input variables ze.InputUnit = 'V'; % Set name of output channel ze.OutputName = 'Height'; % Set unit of output channel ze.OutputUnit = 'm'; % Set validation data properties zv.TimeUnit = 'sec'; zv.InputName = 'Voltage'; zv.InputUnit = 'V'; zv.OutputName = 'Height'; zv.OutputUnit = 'm';
Per verificare che la proprietà InputName
di ze
sia stata modificata, digitare il seguente comando:
ze.inputname
Suggerimento
I nomi delle proprietà, come InputName
, non fanno distinzione tra lettere maiuscole e lettere minuscole. È inoltre possibile abbreviare i nomi delle proprietà che iniziano con Input
o Output
sostituendo u
per Input
e y
per Output
nel nome della proprietà. Ad esempio, OutputUnit
equivale a yunit
.
Avvio dell’app System Identification
Per aprire l’app System Identification, digitare il seguente comando nella Finestra di comando MATLAB:
systemIdentification
Il nome predefinito della sessione Untitled
viene visualizzato nella barra del titolo.
Importazione di oggetti dati nell’app System Identification
È possibile importare oggetti dati nell’app dall’area di lavoro MATLAB.
È necessario che gli oggetti dati siano già stati creati, come descritto in Creazione di oggetti iddata e che l’app sia già stata aperta, come descritto in Avvio dell’app System Identification.
Per importare gli oggetti dati:
Nell’app System Identification, selezionare Import data > Data object.
Questa azione apre la finestra di dialogo Importa dati.
Immettere
ze
nel campo Object per importare i dati di stima. Premere Invio.Questa azione inserisce le informazioni dell’oggetto nei campi Importa dati.
Fare clic su More per visualizzare ulteriori informazioni su questi dati, inclusi i nomi dei canali e le unità.
Fare clic su Import per aggiungere l’icona denominata
ze
all’app System Identification.Nella finestra di dialogo Importa dati, digitare
zv
nel campo Object per importare i dati di convalida. Premere Invio.Fare clic su Import per aggiungere l’icona denominata
zv
all’app System Identification.Nella finestra di dialogo Importa dati, fare clic su Close.
Nell’app System Identification, trascinare l’icona dei dati di convalida zv sul rettangolo Validation Data. L’icona dei dati di stima ze è già designata nel rettangolo Working Data.
In alternativa, fare clic con il tasto destro del mouse sull’icona
zv
per aprire la finestra di dialogo Informazioni sui dati/modello. Selezionare la casella di spunta Use as Validation Data. Fare clic su Apply, quindi su Close per aggiungerezv
al rettangolo Validation Data.L’app System Identification assomiglia adesso alla figura seguente.
Stima di modelli ARX non lineari
Stima del modello ARX non lineare con le impostazioni predefinite
In questa sezione del tutorial, si stima un modello ARX non lineare utilizzando la struttura del modello predefinita e le opzioni di stima.
È necessario che i dati siano già stati preparati, come descritto in Preparazione dei dati. Per ulteriori informazioni sui modelli ARX non lineari, vedere Che cos’è un modello ARX non lineare?.
Nota
Le illustrazioni in questo tutorial rappresentano una sessione tipica dell’app System Identification. I risultati potrebbero non corrispondere esattamente ai risultati delle immagini.
Nell’app System Identification, selezionare Estimate > Nonlinear models.
Questa azione apre la finestra di dialogo Estimate Nonlinear ARX Models.
La finestra di dialogo contiene due schede: Model Structure e Estimation Options.
La scheda Model Structure contiene i parametri che configurano la struttura del modello, come la scelta dei regressori e il tipo di funzione di uscita. Specificare il nome del modello da stimare in Model name. Il nome predefinito del modello è
nlarx1
.Utilizzare la scheda Regressors per creare gli insiemi di regressori da usare. Per impostazione predefinita, l’app crea un insieme di regressori lineari con ritardi
[1 2]
in ciascuna variabile e memorizza il regressore comeLinear regressors #1
nell’area Regressor Sets. Questo pannello contiene una tabella che permette di modificare i ritardi da utilizzare per ciascuna variabile.Il pannello di configurazione Configure: Linear regressors #1 contiene una tabella che mostra i valori del ritardo utilizzato dall’insieme di regressori. Questi ritardi possono essere modificati.
La tabella di assegnazione del regressore Assign Regressors to Output Function elenca i nomi dei regressori e le assegnazioni degli stessi ai componenti della funzione di uscita.
Le assegnazioni del regressore nella tabella producono un modello per l’uscita
Height
di:Height(t) = f(Height(t-1), Height(t-2),Voltage(t-1),Voltage(t-2))
In questo caso, f(.) è una funzione non lineare statica che mappa i regressori sull’uscita. Per scegliere f(.) e i parametri associati, utilizzare la scheda Output Function.
È possibile aggiungere più insiemi di regressori, come i polinomi e le formule personalizzate, selezionando un tipo di regressore in Add regressors of type.
Questo esempio utilizza solo
Linear regressors #1
.Selezionare la scheda Output Function.
La scheda mostra che l’app seleziona Wavelet Network come tipo predefinito di funzione di uscita f(.). Questa funzione utilizza una somma di una funzione lineare, una funzione non lineare (che è una somma di wavelet scalate) e un termine di offset per calcolare l’uscita. La scheda mostra inoltre un insieme di parametri di configurazione. Il numero di wavelet utilizzate dalla funzione è configurato per essere automaticamente scelto durante la stima. Questa selezione può essere modificata. È inoltre possibile modificare i valori iniziali dei coefficienti lineari e dell’offset. Per la prima stima, mantenere le scelte predefinite.
Fare clic su Estimate.
Questa azione aggiunge il modello
nlarx1
alla scheda del modello dell’app System Identification, come mostrato nella figura seguente.Fare doppio clic o fare clic con il tasto destro del mouse sull’icona del modello
nlarx1
. La scheda del modello mostra le informazioni relative al modello stimato. L’area superiore descrive la struttura del modello e i risultati di stima (dati utilizzati, percentuale di adattamento e altre metriche di qualità). L’area inferiore (Diary and Notes) mostra lo script MATLAB che si può utilizzare per riprodurre i risultati di stima nella riga di comando.Nota
Fit (%) è calcolata utilizzando l’insieme di dati di stima focalizzato sulla previsione e non sull’insieme di dati di convalida. Tuttavia, il grafico di uscita del modello nel passaggio successivo paragona l’adattamento all’insieme dei dati di convalida. Per verificare in che misura il modello possa simulare la risposta di un insieme di dati di convalida indipendente, utilizzare il grafico Model Output, come illustrato nei passaggi seguenti.
Nell’area Model Views dell’app System Identification, selezionare Model output. Questa azione simula il modello utilizzando i dati di convalida in ingresso come ingresso per il modello e traccia l’uscita simulata sopra i dati di convalida dell’uscita.
L’area Best Fits del grafico di uscita del modello mostra la concordanza tra l’uscita del modello e l’uscita dei dati di convalida utilizzando una metrica di bontà dell’adattamento dell’errore quadratico medio normalizzato (NRMSE). La concordanza risulta scadente nell’intervallo di tempo 400-500.
Plottaggio di sezioni trasversali di non linearità per modelli ARX non lineari
Eseguire la seguente procedura per visualizzare la forma della non linearità come una funzione di un regressore in un grafico di un modello ARX non lineare.
Nell’app System Identification, selezionare la casella di spunta Nonlinear ARX per visualizzare le sezioni trasversali di non linearità.
Per impostazione predefinita, il grafico mostra la relazione tra i regressori in uscita
Height(t-1)
eHeight(t-2)
. Il grafico nella figura seguente mostra un piano regolare. Pertanto, la relazione tra i regressori e l’uscita è approssimativamente un piano lineare.Nella finestra del grafico del modello ARX non lineare, impostare Regressor 1 su
Voltage(t-1)
. Impostare Regressor 2 suVoltage(t-2)
. Fare clic su Apply.La relazione tra questi regressori e l’uscita non è lineare, come mostrato nel grafico seguente.
Per ruotare la superficie di non linearità, selezionare Style > Rotate 3D e trascinare il grafico sul nuovo orientamento.
Per visualizzare una sezione trasversale monodimensionale per il regressore 1, impostare il regressore 2 su
none
e fare clic su Apply. La figura seguente mostra la grandezza di non linearità del regresore 1, che rappresenta il segnale della tensione spostato nel tempoVoltage(t-1)
.
Modifica della struttura del modello ARX non lineare
In questa sezione del tutorial, si stima un modello ARX non lineare con specifiche impostazioni di ritardo in ingresso e di non linearità. Usualmente, gli ordini del modello si selezionano per tentativi ed errori fino a quando non si ottiene un modello che produce un adattamento accurato ai dati.
È necessario che il modello ARX non lineare sia già stato stimato con le impostazioni predefinite, come descritto in Stima del modello ARX non lineare con le impostazioni predefinite.
Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure, quindi selezionare la scheda Regressors.
Nel pannello Configure: Linear regressors #1, modificare i ritardi della variabile
Voltage
su[3 4]
. In quanto i dati suggeriscono che è presente un ritardo di minimo 3 campioni tra l’ingresso e l’uscita.Questa azione aggiorna l’elenco dei regressori per mostrare i termini
Voltage(t-3)
eVoltage(t-4)
con un ritardo minimo di tre campioni.Fare clic su Estimate.
Questa azione aggiunge il modello
nlarx2
all’app System Identification e aggiorna la finestra Model Output per includere questo modello. Facendo doppio clic sull’iconanlarx2
nella scheda del modello della finestra principale dell’app verranno visualizzati i risultati di stima.L’app aggiorna inoltre il grafico di uscita del modello per visualizzare l’adattamento del modello
nlarx2
all’insieme di dati di convalidazv
. Il grafico mostra che la scelta dei ritardi corretti delle variabili in ingresso migliora l’adattamento.Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure, quindi selezionare la scheda Regressors.
Selezionare la scheda Output Function.
Per il Number of Units, selezionare Enter e immettere
6
. L’impostazione di un numero specifico controlla la flessibilità della funzione non lineare specificando direttamente il numero di wavelet utilizzate dal Wavelet Network.Fare clic su Estimate.
Questa azione aggiunge il modello
nlarx3
all’app System Identification. Aggiorna inoltre la finestra Model Output, come mostrato nella figura seguente.
Utilizzo dei regressori polinomiali
È possibile stimare un modello ARX non lineare che utilizza potenze maggiori di variabili ritardate come regressori. In questo esempio, si aggiungeranno polinomi del secondo ordine delle variabili ritardate, inclusi i termini trasversali.
Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure, quindi selezionare la scheda Regressors.
Espandere Add regressors of type e selezionare Polynomial.
Questa azione aggiunge un insieme di regressori polinomiali chiamato
Polynomial regressors #1
all’elenco degli insiemi dei regressori. Per impostazione predefinita, questo insieme è configurato per generare regressori di ordine 2, come mostrato nel pannello di configurazione.Modificare i ritardi
Voltage
su[3 4]
.Selezionare Include mix of variables per includere tutti i termini trasversali. Questa azione aggiunge al modello dieci regressori del secondo ordine, oltre ai quattro forniti da Linear regressor #1.
Fare clic su Estimate. Questa azione aggiunge il modello
nlarx4
all’app. L’app aggiorna il grafico Model Output, come mostrato nella figura seguente.Il grafico mostra che l’aggiunta di regressori polinomiali non ha migliorato la capacità di generalizzazione del modello. Ossia, il modello non fornisce un adattamento migliore tra l’uscita del modello e l’uscita misurata per i dati di convalida indipendenti. Questo risultato è usualmente lo scenario con sovraadattamenti, ovvero quando il modello contiene più regressori di quanti ne sono assolutamente necessari.
Selezione di un sottoinsieme di regressori nel blocco non lineare
È possibile stimare un modello ARX non lineare che includa solo un sottoinsieme di regressori che si inseriscono come ingressi nel blocco non lineare. Per impostazione predefinita, tutti i regressori sono utilizzati nel blocco non lineare. In questa sezione del tutorial, si assegna solo un sottoinsieme dei regressori al blocco non lineare.
È necessario che la struttura del modello sia già stato specificata, come descritto in Modifica della struttura del modello ARX non lineare.
Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure, quindi selezionare la scheda Regressors.
Se compresso, espandere il pannello Assign Regressors to Output Function.
Deselezionare le selezioni di tutti i regressori del secondo ordine dalla colonna Height:NonlinearFcn della tabella. Inoltre, deselezionare le selezioni di tutti i regressori con termini trasversali (ovvero i regressori composti dal prodotto di 2 termini) da Height:LinearFcn
Fare clic su Estimate.
Questa azione aggiunge il modello
nlarx5
all’app System Identification. Aggiorna inoltre la finestra Model Output.
Questo modello mostra una migliore capacità di generalizzazione.
Specifica del modello stimato in precedenza con una diversa funzione di non linearità in uscita
È possibile stimare una serie di modelli ARX non lineari introducendo delle variazioni sistematiche alla struttura del modello e basando ogni nuovo modello sulla configurazione di un modello stimato in precedenza. In questa sezione del tutorial, si stima un modello ARX non lineare simile a un modello esistente (nlarx3
), ma che presenta una non linearità diversa nella funzione di uscita.
Nella finestra di dialogo Estimate Nonlinear ARX Models, selezionare la scheda Model Structure.
Selezionare
nlarx3
da Initial Model. Questo imposta le proprietà visualizzate nelle schede Regressors e Output Function sui valori corrispondenti anlarx3
.Selezionare la scheda Output Function.
Nella tabella, modificare la scelta di Nonlinear Function su
Sigmoid Network
. Questo imposta la funzione di uscita su una rete sigmoidea.In Enter the number of units, immettere
6
.Fare clic su Estimate.
Questa azione aggiunge il modello
nlarx6
all’app System Identification. Aggiorna inoltre il grafico Model Output, come mostrato nella figura seguente.
Selezione del modello migliore
Il modello migliore è il modello più semplice che descrive accuratamente la dinamica. I risultati indicano che il modello nlarx3
è candidato ad essere il miglior modello idnlarx per questi dati, in base alle varie scelte di struttura del modello esplorate in questo esempio.
Esportazione del modello migliore nell’area di lavoro di base
Trascinare l’icona nlarx3
nel riquadro To Workspace nella finestra principale dell’app System Identification. In alternativa, fare doppio clic sull’icona nlarx3
per aprire la relativa scheda informazioni. Da qui, fare clic su Export per esportare il modello nell’area di lavoro di base.
Stima dei modelli Hammerstein-Wiener
Stima dei modelli Hammerstein-Wiener con le impostazioni predefinite
In questa sezione del tutorial, si stimano i modelli Hammerstein-Wiener non lineari utilizzando la struttura del modello predefinita e le opzioni di stima.
È necessario che i dati siano già stati preparati, come descritto in Preparazione dei dati. Per ulteriori informazioni sui modelli ARX non lineari, vedere Ch cos’è un modello Hammerstein-Wiener?
Nota
Le illustrazioni in questo tutorial rappresentano una sessione tipica dell’app System Identification. I risultati potrebbero non corrispondere esattamente ai risultati delle immagini.
Nell’app System Identification, selezionare Estimate > Hammerstein-Wiener Models per aprire la finestra di dialogo Estimate Hammerstein-Wiener Models. La finestra di dialogo contiene due schede: Model Structure e Estimation Options.
Ispezionare la struttura del modello predefinita. La scheda Model Structure contiene tre schede, una per ogni componente del modello. Questi componenti sono la non linearità in ingresso, il blocco dinamico lineare e la non linearità in uscita.
Selezionare la scheda Input Nonlinearity. La non linearità predefinita è una funzione Piecewise Linear con 10 punti di interruzione.
Selezionare la scheda Linear Block. La funzione lineare di trasferimento ha un numeratore di ordine 2, che implica un polinomio del secondo ordine in z-1, un denominatore di ordine 3 e un ritardo in ingresso di 1 campione.
Selezionare la scheda Output Nonlinearity. Come per la scheda Input Nonlinearity, la non linearità predefinita è una funzione Piecewise Linear con 10 punti di interruzione.
Fare clic su Estimate.
Questa azione stima i parametri del modello Hammerstein-Wiener per minimizzare la differenza tra l’uscita del modello e l’uscita misurata (
ze.OutputData
). I parametri stimati sono:Le posizioni dei punti di interruzione (coordinate x- e y-) delle funzioni lineari a tratti in ingresso e in uscita.
I coefficienti polinomiali del numeratore e del denominatore che compongono la funzione di trasferimento del blocco lineare.
Il software aggiunge il modello stimato
nlhw1
alla scheda del modello dell’app System Identification.Nell’app System Identification, selezionare la casella di spunta Model output.
Questa azione simula il modello utilizzando i dati di convalida in ingresso come ingresso per il modello e traccia l’uscita simulata sopra i dati di convalida dell’uscita. Si noti che i dati di convalida sono impostati su
zv
.L’area Best Fits della finestra di uscita del modello mostra la concordanza tra l’uscita del modello e l’uscita dei dati di convalida.
La convalida del modello
nlhw1
non è ottimale. L’adattamento azv.OutputData
è scarso.
Plottaggio delle non linearità e della funzione di trasferimento lineare
È possibile tracciare le non linearità in ingresso/in uscita e la funzione di trasferimento lineare su un grafico Hammerstein-Wiener.
Nell’app System Identification, selezionare Hamm-Wiener per visualizzare il grafico del modello Hammerstein-Wiener.
Il grafico visualizza la non linearità in ingresso, come mostrato nella figura seguente.
Fare clic sul rettangolo yNL nella parte superiore della finestra del grafico Hammerstein-Wiener.
Il grafico si aggiorna per visualizzare la non linearità in uscita.
Fare clic sul rettangolo Linear Block nella parte superiore della finestra del grafico Hammerstein-Wiener.
Il grafico si aggiorna per visualizzare la risposta al gradino della funzione di trasferimento lineare.
Nell’elenco Choose plot type, selezionare
Bode
. Questa azione visualizza un grafico Bode della funzione di trasferimento lineare.
Modifica del ritardo in ingresso del modello Hammerstein-Wiener
In questa sezione del tutorial, si stima un modello Hammerstein-Wiener con un ordine del modello specifico e impostazioni di non linearità. Usualmente, gli ordini e i ritardi del modello si selezionano per tentativi ed errori fino a quando non si ottiene un modello che produce un adattamento accurato ai dati.
È necessario che il modello Hammerstein-Wiener sia già stato stimato con le impostazioni predefinite, come descritto in Stima dei modelli Hammerstein-Wiener con le impostazioni predefinite.
Nella finestra di dialogo Estimate Hammerstein-Wiener, selezionare la scheda Model Structure, quindi selezionare la scheda Linear Block.
Per il canale in ingresso
Voltage
, fare doppio clic sulla cella Input Delay (nk) corrispondente e immettere il valore3
.Fare clic su Estimate.
Questa azione aggiunge il modello
nlhw2
all’app System Identification e aggiorna il grafico Model Output, come mostrato nella figura seguente.Il pannello Best Fits della finestra di uscita del modello mostra la qualità dell’adattamento
nlhw2
, che è un miglioramento rispetto a quello del modellonlhw1
.
Modifica dello stimatore di non linearità nel modello Hammerstein-Wiener
In questa sezione dell’esempio, si modifica la struttura predefinita del modello Hammerstein-Wiener cambiando il relativo stimatore di non linearità.
Suggerimento
Se si ha a conoscenza che il sistema include non linearità di saturazione o di zona morta, è possibile specificare tali stimatori specializzati di non linearità nel modello. Piecewise Linear
, Wavelet Network
e Sigmoid Network
sono stimatori di non linearità per l’approssimazione di non linearità generale.
Nella finestra di dialogo Estimate Hammerstein-Wiener Models, selezionare la scheda Model Structure, quindi selezionare la scheda Input Nonlinearity.
Fare clic sulla cella Nonlinearity per la variabile
Voltage
e selezionareSigmoid Network
dall’elenco.In Enter the number of units, impostare il valore su
20
.Fare clic su Estimate.
Questa azione aggiunge il modello
nlhw3
all’app System Identification. Aggiorna inoltre la finestra Model Output, come mostrato nella figura seguente.Nella finestra di dialogo Estimate Hammerstein-Wiener Models, selezionare la scheda Input Nonlinearity.
Per l’ingresso
Voltage
, impostare Nonlinearity suWavelet Network
. Il valore predefinito per Number of Units è Select Automatically.Selezionare la scheda Output Nonlinearity.
Impostare l’uscita
Height
Nonlinearity suOne-dimensional Polynomial
. Impostare Degree of polynomial su2
.Fare clic su Estimate.
Questa azione aggiunge il modello
nlhw4
all’app System Identification. Aggiorna inoltre la finestra Model Output, come mostrato nella figura seguente.
Selezione del modello migliore
Il modello migliore è il modello più semplice che descrive accuratamente la dinamica.
In questo esempio, i modelli nlhw3
e nlhw4
sono dei buoni candidati..