Contenuto principale

bode

Risposta in frequenza di Bode del sistema dinamico

Descrizione

[mag,phase,wout] = bode(sys) calcola la risposta in frequenza del modello di sistema dinamico sys e restituisce la grandezza e la fase della risposta a ciascuna frequenza nel vettore wout. La funzione determina automaticamente le frequenze in wout in base alla dinamica del sistema.

esempio

[mag,phase,wout] = bode(sys,w) restituisce i dati di risposta alle frequenze specificate da w. È possibile specificare un intervallo di frequenze o un vettore di frequenze.

esempio

[mag,phase,wout,sdmag,sdphase] = bode(sys,w) restituisce la deviazione standard stimata dei valori di grandezza e fase per il modello identificato sys.

esempio

bode(___) traccia la risposta in frequenza di sys con le opzioni di plottaggio predefinite per tutte le precedenti combinazioni di argomenti di input. Il grafico mostra la grandezza (in dB) e la fase (in gradi) della risposta del sistema in funzione della frequenza. Per ulteriori opzioni di personalizzazione dei grafici, utilizzare bodeplot.

  • Per tracciare le risposte di più sistemi dinamici sullo stesso grafico, è possibile specificare sys come un elenco di modelli separati da virgole. Ad esempio, bode(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, bode(sys1,LineSpec1,sys2,LineSpec2) traccia due modelli e ne specifica lo stile di plottaggio. Per ulteriori informazioni sulla specifica di un valore LineSpec, vedere bodeplot.

esempio

Esempi

comprimi tutto

Creare un grafico di Bode del seguente sistema dinamico SISO a tempo continuo.

H(s)=s2+0.1s+7.5s4+0.12s3+9s2.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
bode(H)

MATLAB figure

bode seleziona automaticamente l'intervallo del grafico in base alla dinamica del sistema.

Creare un grafico di Bode 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]);
bode(H,{1,100})
grid on

MATLAB figure

L'array di celle {1,100} specifica i valori di frequenza minima e massima nel grafico di Bode. 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 5 10 15 20 23 31 40 44 50 85 100];
bode(H,w,'.-')
grid on

MATLAB figure

bode traccia la risposta in frequenza solo alle frequenze specificate.

Paragonare la risposta in frequenza di un sistema a tempo continuo con un sistema discretizzato equivalente sullo stesso grafico di Bode.

Creare sistemi dinamici a tempo continuo e a tempo discreto.

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
Hd = c2d(H,0.5,'zoh');

Creare un grafico di Bode che visualizzi entrambi i sistemi.

bode(H,Hd)

MATLAB figure

Il grafico di Bode di un sistema a tempo discreto include una linea verticale che segna la frequenza di Nyquist del sistema.

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

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
Hd = c2d(H,0.5,'zoh');
bode(H,'r',Hd,'b--')

MATLAB figure

Il primo LineSpec, 'r', specifica una linea rossa continua per la risposta di H. Il secondo LineSpec, 'b--', specifica una linea blu tratteggiata per la risposta di Hd.

Calcolare la grandezza e la fase della risposta in frequenza di un sistema SISO.

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

H = tf([1 0.1 7.5],[1 0.12 9 0 0]);
[mag,phase,wout] = bode(H);

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

size(mag)
ans = 1×3

     1     1    41

length(wout)
ans = 
41

Quindi, ogni voce lungo la terza dimensione di mag fornisce la grandezza della risposta alla frequenza corrispondente in wout.

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

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

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

bode(H)

MATLAB figure

Calcolare la grandezza e la fase di queste risposte a 20 frequenze comprese tra 1 e 10 radianti.

w = logspace(0,1,20);
[mag,phase] = bode(H,w);

mag e phase 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 mag.

size(mag)
ans = 1×3

     2     3    20

Quindi, in questo esempio, mag(1,3,10) è la grandezza della risposta dal terzo input al primo output, calcolata alla 10ª frequenza in w. In modo analogo, phase(1,3,10) contiene la fase della stessa risposta.

Paragonare la risposta in frequenza di un modello parametrico, identificato dai dati di input/output, con un modello non parametrico identificato utilizzando gli stessi dati.

Identificare i modelli parametrici e non parametrici basati sui dati.

load iddata2 z2;
w = linspace(0,10*pi,128);
sys_np = spa(z2,[],w);
sys_p = tfest(z2,2);

L'utilizzo dei comandi spa e tfest richiede il software System Identification Toolbox™.

sys_np è un modello non parametrico identificato. sys_p è un modello parametrico identificato.

Creare un grafico di Bode che includa entrambi i sistemi.

bode(sys_np,sys_p,w);
legend('sys-np','sys-p')

MATLAB figure

È possibile visualizzare la regione di confidenza sul grafico di Bode facendo clic con il pulsante destro del mouse sul grafico e selezionando Characteristics > Confidence Region (Caratteristiche > Regione di confidenza).

Calcolare la deviazione standard della grandezza e della fase di un modello identificato. Utilizzare questi dati per creare un grafico 3σ dell'incertezza della risposta.

Identificare un modello di funzione di trasferimento basato sui dati. Acquisire i dati di deviazione standard della grandezza e della fase della risposta in frequenza.

load iddata2 z2;
sys_p = tfest(z2,2);
w = linspace(0,10*pi,128);
[mag,ph,w,sdmag,sdphase] = bode(sys_p,w);

L'utilizzo del comando tfest richiede il software System Identification Toolbox™.

sys_p è un modello di funzione di trasferimento identificato. sdmag e sdphase contengono rispettivamente i dati di deviazione standard della grandezza e della fase della risposta in frequenza.

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

mag = squeeze(mag);
sdmag = squeeze(sdmag);
semilogx(w,mag,'b',w,mag+3*sdmag,'k:',w,mag-3*sdmag,'k:');

Figure contains an axes object. The axes object contains 3 objects of type line.

Creare un grafico di Bode 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(5);
bodeplot(Gc,Gr)
legend("Complex-coefficient model","Real-coefficient model",Location="southwest");

MATLAB figure

Nella scala di frequenza logaritmica, il grafico mostra due rami per i modelli a coefficienti complessi, uno per le frequenze positive, con una freccia rivolta verso destra e uno per le frequenze negative, con una freccia rivolta verso sinistra. In entrambi i rami, le frecce indicano la direzione delle frequenze crescenti. I grafici per i modelli a coefficienti reali contengono sempre un unico ramo senza frecce.

È possibile modificare la scala di frequenza del grafico di Bode facendo clic con il pulsante destro del mouse sul grafico e selezionando Properties (Proprietà). Nella finestra di dialogo Property Editor (Editor delle proprietà), nella scheda Units (Unità), impostare la scala di frequenza su linear scale. In alternativa, è possibile utilizzare la funzione bodeplot e modificare l'oggetto grafico restituito.

bp = bodeplot(Gc,Gr);
bp.FrequencyScale = "linear";
legend("Complex-coefficient model","Real-coefficient model",Location="southwest");

MATLAB figure

Nella scala di frequenza lineare, il grafico mostra un singolo ramo con un intervallo di frequenza simmetrico centrato su un valore di frequenza pari a zero. Il grafico mostra inoltre la risposta in frequenza negativa di un modello a coefficienti reali quando si traccia la risposta insieme a un modello a coefficienti complessi.

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 come uno di questi valori:

  • 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.

Per i modelli con coefficienti complessi, se si specifica un intervallo di frequenza di [wmin,wmax] per il grafico, in:

  • Scala di frequenza logaritmica, i limiti di frequenza del grafico sono impostati su [wmin,wmax] e il grafico mostra due rami, uno per le frequenze positive [wmin,wmax] e uno per le frequenze negative [–wmax,–wmin].

  • Scala di frequenza lineare, i limiti di frequenza del grafico sono impostati su [–wmax,wmax] e il grafico mostra un singolo ramo con un intervallo di frequenza simmetrico centrato su un valore di frequenza pari a zero.

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

Argomenti di output

comprimi tutto

Grandezza della risposta del sistema in unità assolute, 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).

Per convertire la grandezza da unità assolute a decibel, utilizzare:

magdb = 20*log10(mag)

Fase della risposta del sistema in gradi, 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 l'argomento di input w.

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

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

Deviazione standard stimata della grandezza per i modelli identificati, restituita come un array tridimensionale con le stesse dimensioni di mag.

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

Deviazione standard stimata della fase per i modelli identificati, restituita come un array tridimensionale con le stesse dimensioni di phase.

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

Suggerimenti

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

  • I grafici creati utilizzando bode 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.

    bode(sys)
    title("first line" + newline + "second line");

Algoritmi

Il software calcola la risposta in frequenza come segue:

  1. Calcolo della rappresentazione del guadagno a polo zero (zpk) del sistema dinamico.

  2. Valutare il guadagno e la fase della risposta in frequenza sulla base dei dati di zeri, poli e guadagni per ciascun canale di input/output del sistema.

    • Per i sistemi a tempo continuo, la funzione bode valuta la risposta in frequenza sull'asse immaginario s = e considera solo le frequenze positive.

    • Per i sistemi a tempo discreto, la funzione bode valuta la risposta in frequenza sul cerchio unitario. Per facilitare l'interpretazione, il comando parametrizza la metà superiore del cerchio unitario come:

      z=ejωTs,0ωωN=πTs,

      dove Ts è il tempo di campionamento e ωN è la frequenza di Nyquist. Il software utilizza quindi la frequenza equivalente a tempo continuo ω come variabile dell'asse x. Poiché H(ejωTs) è periodico con periodo 2ωN, la funzione bode traccia la risposta solo fino alla frequenza di Nyquist ωN. Se sys è un modello a tempo discreto con un tempo di campionamento non specificato, la funzione bode utilizza Ts = 1.

Cronologia versioni

Introduzione prima di R2006a

espandi tutto