Contenuto principale

nyquist

Risposta di Nyquist di un sistema dinamico

Descrizione

[re,im,wout] = nyquist(sys) restituisce le parti reale e immaginaria della risposta in frequenza per ciascuna frequenza contenuta nel vettore di frequenza wout. La funzione determina automaticamente le frequenze in wout in base alla dinamica del sistema. Questa sintassi non genera un grafico.

esempio

[re,im,wout] = nyquist(sys,w) restituisce i dati di risposta alle frequenze specificate da w.

  • Se w è un array di celle di forma {wmin,wmax}, wout contiene le frequenze comprese tra wmin e wmax.

  • Se w è un vettore di frequenze, wout = w.

esempio

[re,im,wout,sdre,sdim] = nyquist(sys,w) restituisce inoltre la deviazione standard stimata delle parti reale e immaginaria della risposta in frequenza per il modello identificato sys. Se si omette w, la funzione determina automaticamente le frequenze in wout in base alla dinamica del sistema.

esempio

nyquist(___) crea un grafico di Nyquist della risposta in frequenza di sys con le opzioni di plottaggio predefinite per tutte le precedenti combinazioni di argomenti di input. Il grafico mostra le parti reali e immaginarie della risposta del sistema in funzione della frequenza. Per ulteriori opzioni di personalizzazione dei grafici, utilizzare nyquistplot.

  • Per tracciare le risposte di più sistemi dinamici sullo stesso grafico, è possibile specificare sys come un elenco di modelli separati da virgole. Ad esempio, nyquist(sys1,sys2,sys3) traccia le risposte di tre modelli sullo stesso grafico.

  • Per specificare un colore, uno stile della linea e un marcatore per ogni sistema nel grafico, specificare un valore LineSpec per ciascun sistema. Ad esempio, nyquist(sys1,LineSpec1,sys2,LineSpec2) traccia due modelli e ne specifica lo stile di plottaggio. Per ulteriori informazioni sulla specifica di un valore LineSpec, vedere nyquistplot.

Esempi

comprimi tutto

Creare la seguente funzione di trasferimento e tracciarne la risposta di Nyquist.

H(s)=2s2+5s+1s2+2s+3.

H = tf([2 5 1],[1 2 3]);
nyquist(H)

MATLAB figure

La funzione nyquist può visualizzare una griglia di M cerchi, che rappresentano i contorni della grandezza costante a loop chiuso. I cerchi M sono definiti come il luogo dei numeri complessi per i quali la seguente quantità assume un valore costante a tutte le frequenze.

T(jω)=|G(jω)1+G(jω)|.

In questo caso, ω è la frequenza in radianti/TimeUnit, dove TimeUnit rappresenta le unità di tempo del sistema e G è l'insieme dei numeri complessi che soddisfano il requisito di grandezza costante.

Per visualizzare la griglia dei cerchi M, fare clic con il tasto destro del mouse sul grafico e selezionare Grid (Griglia). In alternativa, utilizzare il comando grid.

grid on

MATLAB figure

Creare un grafico di Nyquist su un intervallo di frequenza specificato. Utilizzare questo approccio quando si desidera concentrarsi sulla dinamica in un particolare intervallo di frequenze.

H = tf([-0.1,-2.4,-181,-1950],[1,3.3,990,2600]);
nyquist(H,{1,100})

L'array di celle {1,100} specifica un intervallo di frequenza [1,100] per il ramo delle frequenze positive e [–100,–1] per il ramo delle frequenze negative nel grafico di Nyquist. Il ramo delle frequenze negative si ottiene per simmetria nei modelli con coefficienti reali. Quando si forniscono i limiti di frequenza in questo modo, la funzione seleziona i punti intermedi per i dati di risposta in frequenza.

In alternativa, specificare un vettore di punti di frequenza da utilizzare per valutare e tracciare la risposta in frequenza.

w = 1:0.1:30;
nyquist(H,w,'.-')

MATLAB figure

MATLAB figure

nyquist traccia la risposta in frequenza alle frequenze specificate.

Confrontare la risposta in frequenza di diversi sistemi sullo stesso grafico di Nyquist.

Creare i sistemi dinamici.

rng(0)
sys1 = tf(3,[1,2,1]);
sys2 = tf([2 5 1],[1 2 3]);
sys3 = rss(4);

Creare un grafico di Nyquist che visualizzi tutti i sistemi.

nyquist(sys1,sys2,sys3)
legend('Location','southwest')

MATLAB figure

Specificare lo stile della linea, il colore o il marcatore per ogni sistema in un grafico di Nyquist utilizzando l'argomento di input LineSpec.

sys1 = tf(3,[1,2,1]);
sys2 = tf([2 5 1],[1 2 3]);
nyquist(sys1,'o:',sys2,'g')

MATLAB figure

Il primo LineSpec, 'o:', specifica una linea punteggiata con marcatori circolari per la risposta di sys1. Il secondo LineSpec, 'g', specifica una linea verde continua per la risposta di sys2.

Calcolare le parti reale e immaginaria della risposta in frequenza di un sistema SISO.

Se non si specificano le frequenze, nyquist sceglie le frequenze in base alla dinamica del sistema e le restituisce nel terzo argomento di output.

H = tf([2 5 1],[1 2 3]);
[re,im,wout] = nyquist(H);

Poiché H è un modello SISO, le prime due dimensioni di re e im sono entrambe pari a 1. La terza dimensione è il numero di frequenze in wout.

size(re)
ans = 1×3

     1     1   141

length(wout)
ans = 
141

Quindi, ogni voce lungo la terza dimensione di re fornisce la parte reale della risposta alla frequenza corrispondente in wout.

Per questo esempio, creare un sistema a 2 output e 3 input.

rng(0,'twister');
H = rss(4,2,3);

Per questo sistema, nyquist traccia le risposte in frequenza di ciascun canale di I/O in un grafico separato in un'unica figura.

nyquist(H)

MATLAB figure

Calcolare le parti reale e immaginaria di queste risposte a 20 frequenze comprese tra 1 e 10 radianti.

w = logspace(0,1,20);
[re,im] = nyquist(H,w);

re e im sono array tridimensionali, in cui le prime due dimensioni corrispondono alle dimensioni di output e input di H e la terza dimensione è il numero di frequenze. Ad esempio, esaminare le dimensioni di re.

size(re)
ans = 1×3

     2     3    20

Quindi, in questo esempio, re(1,3,10) è la parte reale della risposta dal terzo input al primo output, calcolata alla 10ª frequenza in w. In modo analogo, im(1,3,10) contiene la parte immaginaria della stessa risposta.

Calcolare le deviazioni standard delle parti reale e immaginaria della risposta in frequenza di un modello identificato. Utilizzare questi dati per creare un grafico 3σ dell'incertezza della risposta.

Caricare i dati di stima z2.

load iddata2 z2;

Identificare un modello di funzione di trasferimento utilizzando i dati. L'utilizzo del comando tfest richiede il software System Identification Toolbox™.

sys_p = tfest(z2,2);

Ottenere le deviazioni standard delle parti reale e immaginaria della risposta in frequenza per un insieme di 512 frequenze w.

w = linspace(-10*pi,10*pi,512);
[re,im,wout,sdre,sdim] = nyquist(sys_p,w);

re e im sono rispettivamente la parte reale e quella immaginaria della risposta in frequenza, mentre sdre e sdim sono le loro deviazioni standard. Le frequenze in wout corrispondono a quelle specificate in w.

Utilizzare i dati sulla deviazione standard per creare un grafico 3σ corrispondente alla regione di confidenza.

re = squeeze(re);
im = squeeze(im); 
sdre = squeeze(sdre);
sdim = squeeze(sdim);
plot(re,im,'b',re+3*sdre,im+3*sdim,'k:',re-3*sdre,im-3*sdim,'k:')
xlabel('Real Axis');
ylabel('Imaginary Axis');

Figure contains an axes object. The axes object with xlabel Real Axis, ylabel Imaginary Axis contains 3 objects of type line.

Creare un grafico di Nyquist di un modello con coefficienti complessi e di un modello con coefficienti reali sullo stesso grafico.

rng(0)
A = [-3.50,-1.25-0.25i;2,0];
B = [1;0];
C = [-0.75-0.5i,0.625-0.125i];
D = 0.5;
Gc = ss(A,B,C,D);
Gr = rss(4);
nyquist(Gc,Gr)
legend('Complex-coefficient model','Real-coefficient model')

MATLAB figure

Il grafico di Nyquist presenta sempre due rami, uno per le frequenze positive e uno per quelle negative. Le frecce indicano la direzione della frequenza crescente per ciascun ramo. Nei modelli con coefficienti complessi, i due rami non sono simmetrici. Per i modelli con coefficienti reali, il ramo negativo si ottiene per simmetria.

Argomenti di input

comprimi tutto

Sistema dinamico, specificato come modello di sistema dinamico SISO o MIMO o come array di modelli del sistema dinamico. È possibile utilizzare questi tipi di sistemi dinamici:

  • Modelli LTI numerici a tempo continuo o a tempo discreto, come i modelli tf, zpk o ss.

  • Modelli stato-spazio radi, come il modello sparss o il modello mechss. Per i modelli radi, la griglia di frequenza w deve essere specificata.

  • Modelli LTI generalizzati o incerti, come i modelli genss o uss (Robust Control Toolbox). Per utilizzare i modelli incerti è necessario disporre del software Robust Control Toolbox™.

    • Per i blocchi di progettazione di controllo sincronizzabili, la funzione valuta il modello al suo valore corrente per tracciare la risposta.

    • Per i blocchi di progettazione di controllo incerti, la funzione traccia il valore nominale e i campioni casuali del modello.

  • Modelli di dati di risposta in frequenza, come i modelli frd. Per tali modelli, la funzione traccia la risposta alle frequenze definite nel modello.

  • Modelli LTI identificati, come i modelli idtf (System Identification Toolbox), idss (System Identification Toolbox) o idproc (System Identification Toolbox). Per utilizzare i modelli identificati è necessario disporre del software System Identification Toolbox™.

Se sys è un array di modelli, il grafico mostra le risposte di tutti i modelli dell'array sugli stessi assi.

Frequenze alle quali calcolare la risposta, specificate in uno dei seguenti modi:

  • Array di celle nella forma {wmin,wmax}: calcolo della risposta alle frequenze comprese nell'intervallo da wmin a wmax. Se wmax è maggiore della frequenza di Nyquist di sys, la risposta è calcolata solo fino alla frequenza di Nyquist.

  • Vettore di frequenze: calcolo della risposta a ciascuna frequenza specificata. Ad esempio, utilizzare logspace per generare un vettore riga con valori di frequenza distanziati logaritmicamente. Il vettore w può contenere sia frequenze positive che negative.

  • []: selezione automatica delle frequenze in base alla dinamica del sistema.

Specificare le frequenze in unità di rad/TimeUnit, dove TimeUnit è la proprietà TimeUnit del modello.

Argomenti di output

comprimi tutto

Parte reale della risposta del sistema, restituita come array tridimensionale. Le dimensioni di questo array sono (numero di output del sistema) x (numero di input del sistema) x (numero di punti di frequenza).

Parte immaginaria della risposta del sistema, restituita come array tridimensionale. Le dimensioni di questo array sono (numero di output del sistema) x (numero di input del sistema) x (numero di punti di frequenza).

Frequenze alle quali la funzione restituisce la risposta del sistema, restituite come un vettore colonna. La funzione sceglie i valori di frequenza in base alla dinamica del modello, a meno che non si specifichino le frequenze utilizzando w.

wout contiene inoltre i valori di frequenza negativi dei modelli con coefficienti complessi.

I valori di frequenza sono espressi in radianti per TimeUnit, dove TimeUnit è il valore della proprietà TimeUnit di sys.

Deviazione standard stimata della parte reale della risposta per i modelli identificati, restituita come array tridimensionale con le stesse dimensioni di re.

Se sys non è un modello LTI identificato, sdre è [].

Deviazione standard stimata della parte immaginaria della risposta per i modelli identificati, restituita come array tridimensionale con le stesse dimensioni di im.

Se sys non è un modello LTI identificato, sdim è [].

Suggerimenti

  • Nel menu che si apre facendo clic con il tasto destro del mouse, sono disponibili due opzioni di ingrandimento specifiche per i grafici di Nyquist:

    • Full View: limita i rami illimitati del grafico di Nyquist, ma include comunque il punto critico (–1, 0).

    • Zoom on (-1,0): ingrandisce l'area intorno al punto critico (–1, 0).

  • Quando sono necessarie ulteriori opzioni di personalizzazione del grafico, utilizzare invece nyquistplot.

  • I grafici creati utilizzando nyquist non supportano titoli o etichette su più righe specificati come array di stringhe o array di celle di vettori di caratteri. Per specificare titoli ed etichette su più righe, utilizzare una singola stringa con un carattere newline.

    nyquist(sys,u,t)
    title("first line" + newline + "second line");

Cronologia versioni

Introduzione prima di R2006a

espandi tutto