Contenuto principale

tf

Modelli della funzione di trasferimento

Descrizione

Utilizzare tf per creare modelli di funzioni di trasferimento a valore reale o a valore complesso, o per convertire i modelli di sistemi dinamici in forma di funzioni di trasferimento.

Le funzioni di trasferimento sono una rappresentazione nel dominio della frequenza di sistemi lineari variabili nel tempo. Ad esempio, si consideri un sistema dinamico SISO a tempo continuo rappresentato dalla funzione di trasferimento sys(s) = N(s)/D(s), dove s = jw e N(s) e D(s) sono chiamati rispettivamente i polinomi del numeratore e del denominatore. L'oggetto del modello tf può rappresentare funzioni di trasferimento SISO o MIMO a tempo continuo o discreto.

È possibile creare un oggetto del modello di funzione di trasferimento specificandone direttamente i coefficienti o convertendo un modello di altro tipo (come un modello stato-spazio ss) in forma di funzione di trasferimento. Per ulteriori informazioni, vedere Funzioni di trasferimento.

È inoltre possibile utilizzare tf per creare modelli stato-spazio generalizzati (genss) o modelli stato-spazio incerti (uss (Robust Control Toolbox)).

Creazione

Descrizione

Creazione del modello di funzione di trasferimento

sys = tf(numerator,denominator) crea un modello di funzione di trasferimento a tempo continuo, impostando le proprietà Numerator e Denominator. Ad esempio, si consideri un sistema dinamico SISO a tempo continuo rappresentato dalla funzione di trasferimento sys(s) = N(s)/D(s), i cui argomenti di input numerator e denominator sono rispettivamente i coefficienti di N(s) e D(s).

esempio

sys = tf(numerator,denominator,ts) crea un modello di funzione di trasferimento a tempo discreto, impostando le proprietà Numerator, Denominator e Ts. Ad esempio, si consideri un sistema dinamico SISO a tempo discreto rappresentato dalla funzione di trasferimento sys(z) = N(z)/D(z), i cui argomenti di input numerator e denominator sono rispettivamente i coefficienti di N(z) e D(z). Per lasciare il tempo di campionamento non specificato, impostare l'argomento di input ts su -1.

esempio

sys = tf(numerator,denominator,ltiSys) crea un modello di funzione di trasferimento con proprietà ereditate dal modello di sistema dinamico ltiSys, compreso il tempo di campionamento.

esempio

sys = tf(m) crea un modello di funzione di trasferimento che rappresenta il guadagno statico m.

esempio

sys = tf(___,PropertyName=Value) imposta le proprietà del modello di funzione di trasferimento utilizzando uno o più argomenti nome-valore della proprietà per una qualsiasi delle precedenti combinazioni input-argomento.

esempio

Conversione in modello di funzione di trasferimento

sys = tf(ltiSys) converte il modello del sistema dinamico ltiSys n un modello di funzione di trasferimento.

esempio

sys = tf(ltiSys,Name=Value) ottiene una rappresentazione della funzione di trasferimento troncata del modello rado ltiSys calcolando gli zeri e i poli in base a uno o più argomenti nome-valore specificati. Poiché questo metodo calcola gli zeri per ogni coppia input-output, è maggiormente adatto per i modelli con input-output di piccole dimensioni. (da R2025a)

esempio

sys = tf(ltiSys,component) converte il component specificato di ltiSys in forma di funzione di trasferimento. Utilizzare questa sintassi solo quando ltiSys è un modello a tempo lineare invariante (LTI) identificato.

esempio

Creazione della variabile per l'espressione razionale

s = tf('s') crea la variabile speciale s che può essere utilizzata in un'espressione razionale per creare un modello di funzione di trasferimento a tempo continuo. Utilizzare un'espressione razionale può talvolta risultare più semplice e intuitivo che specificare i coefficienti polinomiali.

esempio

z = tf('z',ts) crea la variabile speciale z che può essere utilizzata in un'espressione razionale per creare un modello di funzione di trasferimento a tempo discreto. Per lasciare il tempo di campionamento non specificato, impostare l'argomento di input ts su -1.

esempio

Argomenti di input

espandi tutto

Coefficienti del numeratore della funzione di trasferimento, specificati come:

  • Un vettore riga di coefficienti polinomiali.

  • Un array di celle Ny x Nu di vettori riga atto a specificare una funzione di trasferimento MIMO, dove Ny è il numero di output e Nu è il numero di input.

Quando si crea la funzione di trasferimento, specificare i coefficienti del numeratore in ordine di potenza decrescente. Ad esempio, se il numeratore della funzione di trasferimento è 3s^2-4s+5, specificare numerator come [3 -4 5]. Per una funzione di trasferimento a tempo discreto con numeratore 2z-1, impostare numerator su [2 -1].

È anche una proprietà dell'oggetto tf. Per ulteriori informazioni, vedere Numerator.

Coefficienti del denominatore, specificati come:

  • Un vettore riga di coefficienti polinomiali.

  • Un array di celle Ny x Nu di vettori riga atto a specificare una funzione di trasferimento MIMO, dove Ny è il numero di output e Nu è il numero di input.

Quando si crea la funzione di trasferimento, specificare i coefficienti del denominatore in ordine di potenza decrescente. Ad esempio, se il denominatore della funzione di trasferimento è 7s^2+8s-9, specificare denominator come [7 8 -9]. Per una funzione di trasferimento a tempo discreto con denominatore 2z^2+1, impostare denominator su [2 0 1].

È anche una proprietà dell'oggetto tf. Per ulteriori informazioni, vedere Denominator.

Tempo di campionamento, specificato come scalare. È anche una proprietà dell'oggetto tf. Per ulteriori informazioni, vedere Ts.

Sistema dinamico, specificato come modello di sistema dinamico SISO o MIMO o come array di modelli del sistema dinamico. I sistemi dinamici che si possono utilizzare comprendono:

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

    Se ltiSys è un modello stato-spazio rado (sparss o mechss), il software calcola un'approssimazione della funzione di trasferimento troncata calcolando i poli e gli zeri in una banda di frequenza specificata di interesse. Per i modelli radi, utilizzare gli argomenti nome-valore per specificare le opzioni computazionali. Se non si specifica alcuna opzione, il software calcola fino ai primi 1000 poli e zeri con la più piccola grandezza. Inoltre, l'ottenimento di questa approssimazione è applicabile solo per i modelli con una rappresentazione sparss valida. (da R2025a)

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

    La funzione di trasferimento risultante presuppone

    • i valori attuali dei componenti sincronizzabili per i blocchi di progettazione del controllo di sincronizzazione.

    • i valori nominali del modello per i blocchi di progettazione del controllo incerto.

  • Modelli LTI identificati, come i modelli idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox) e idgrey (System Identification Toolbox). Per selezionare il componente del modello identificato da convertire, specificare component. Se non si specifica component, tf converte il componente misurato del modello identificato per impostazione predefinita. (Per utilizzare i modelli identificati è necessario disporre del software System Identification Toolbox™).

Guadagno statico, specificato come scalare o matrice. Il guadagno statico o guadagno allo stato stazionario di un sistema rappresenta il rapporto tra l'output e l'input in condizioni di stato stazionario.

Componente del modello identificato da convertire, specificato in uno dei seguenti modi:

  • 'measured': convertire il componente misurato di sys.

  • 'noise': convertire il componente di rumore di sys

  • 'augmented': converte sia il componente misurato che il componente di rumore di sys.

component si applica solo quando sys è un modello LTI identificato.

Per ulteriori informazioni sui modelli LTI identificati e sui relativi componenti misurati e di rumore, vedere Identified LTI Models.

Argomenti nome-valore

espandi tutto

Specificare le coppie di argomenti opzionali come Name1=Value1,...,NameN=ValueN, dove Name è il nome dell'argomento e Value è il valore corrispondente. Gli argomenti nome-valore devono apparire dopo gli altri argomenti, ma l'ordine delle coppie è ininfluente.

Esempio sys = tf(sparseSys,Focus=[0 100],Display="off")

Da R2025a

Utilizzare il calcolo parallelo durante il calcolo a polo zero, specificato come numerico o logico 0 (false) o 1(true).

Quando UseParallel è impostato su true, è possibile scegliere esplicitamente il ridimensionamento all'ambiente parallelo preferito. L'abilitazione del calcolo parallelo può comportare un miglioramento delle prestazioni durante il calcolo a polo zero. Tuttavia, anche quando UseParallel è impostato su false, l'algoritmo può utilizzare il multithreading integrato per utilizzare al meglio le risorse locali. Per ulteriori informazioni, vedere MATLAB Multicore.

Per utilizzare questa opzione è necessario disporre di una licenza Parallel Computing Toolbox™.

Da R2025a

Gradiente di decadimento, specificato come scalare non positivo o matrice.

  • Utilizzare un valore scalare per i modelli SISO o quando il gradiente è uniforme per tutte le coppie input-output per i modelli MIMO.

  • Quando il gradiente è diverso per ogni coppia input-output per i modelli MIMO, utilizzare una matrice.

Questa opzione consente di specificare esplicitamente come l'approssimazione deve decadere oltre l'intervallo di frequenza specificato. Ad esempio, uno Slope pari a -2 garantisce che il guadagno decada a una velocità di almeno –40 dB/decade (velocità di decadimento 1/s2) oltre fmax.

Da R2025a

Intervallo di frequenza di interesse, specificato come vettore di forma [0,fmax]. Quando si specifica un intervallo di frequenza di interesse, il software calcola solo i poli con frequenza naturale in questo intervallo. Per i modelli a tempo discreto, il software approssima la frequenza naturale equivalente attraverso la trasformata di Tustin.

Poiché tf calcola tutti i poli e gli zeri nell'intervallo di frequenza specificato, in genere si specifica un intervallo a bassa frequenza per limitare il calcolo di un numero elevato di poli e zeri. Per impostazione predefinita, l'area di interesse non è specificata ([0 Inf]) e l'algoritmo calcola fino a MaxNumber di poli e zeri.

Da R2025a

Numero massimo di poli e zeri da calcolare, specificato come intero positivo. Questo valore limita il numero di poli e zeri calcolati dall'algoritmo e l'ordine di approssimazione del modello originale rado.

Da R2025a

Spostamento spettrale, specificato come scalare finito.

Il software calcola i poli con la frequenza naturale nell'intervallo specificato [0,fmax] utilizzando iterazioni di potenza inversa per A-sigma*E, ottenendo gli autovalori più vicini al valore dello spostamento sigma. Quando A è singolare e sigma è zero, l'algoritmo ha esito negativo perché non esiste l'inversa. Pertanto, per i modelli radi con azione integrale (s = 0 o z = 1 per i modelli a tempo discreto), è possibile utilizzare questa opzione per spostare implicitamente i poli o gli zeri al valore più vicino a questo valore di spostamento. Specificare un valore di spostamento che non sia uguale a un valore del polo o di zero esistente nel modello originale.

Da R2025a

Tolleranza per la precisione dei poli e degli zeri calcolati, specificata come scalare finito positivo. Questo valore controlla la convergenza degli autovalori calcolati nelle iterazioni di potenza inversa.

Da R2025a

Mostrare o nascondere il report di avanzamento, specificato come "off" o "on".

Argomenti di output

espandi tutto

Modello del sistema di output, restituito come:

  • Un oggetto del modello della funzione di trasferimento (tf), quando gli argomenti di input numerator e denominator sono array numerici. sys è sempre un oggetto del modello tf quando si converte ltiSys nel tipo di modello tf.

  • Un oggetto del modello stato-spazio generalizzato (genss), quando gli argomenti di input numerator o denominator includono parametri sincronizzabili, come i parametri realp o le matrici generalizzate (genmat). Per un esempio, vedere Filtro passa-basso sincronizzabile.

  • Un oggetto del modello stato-spazio incerto (uss), quando gli argomenti di input numerator o denominator includono parametri incerti. Per utilizzare i modelli incerti è necessario disporre del software Robust Control Toolbox. Per un esempio, vedere Transfer Function with Uncertain Coefficients (Robust Control Toolbox).

Proprietà

espandi tutto

Coefficienti del numeratore, specificati come:

  • Un vettore riga dei coefficienti polinomiali in ordine di potenza decrescente (per i valori Variable 's', 'z', 'p' o 'q') in ordine di potenza crescente (per i valori Variable 'z^-1' o 'q^-1').

  • Un array di celle Ny x Nu di vettori riga atto a specificare una funzione di trasferimento MIMO, dove Ny è il numero di output e Nu è il numero di input. Ciascun elemento dell'array di celle specifica i coefficienti del numeratore per una data coppia input/output. Se sia Numerator che Denominator sono specificati come array di celle, dovranno avere le stesse dimensioni.

I coefficienti di Numerator possono essere a valore reale o a valore complesso.

Coefficienti del denominatore, specificati come:

  • Un vettore riga dei coefficienti polinomiali in ordine di potenza decrescente (per i valori Variable, i valori 's', 'z', 'p' o 'q') in ordine di potenza crescente (per i valori Variable 'z^-1' o 'q^-1').

  • Un array di celle Ny x Nu di vettori riga atto a specificare una funzione di trasferimento MIMO, dove Ny è il numero di output e Nu è il numero di input. Ciascun elemento dell'array di celle specifica i coefficienti del numeratore per una data coppia input/output. Se sia Numerator che Denominator sono specificati come array di celle, dovranno avere le stesse dimensioni.

Se tutte le voci SISO di una funzione di trasferimento MIMO hanno lo stesso denominatore, è possibile specificare Denominator come vettore riga e Numerator come array di celle.

I coefficienti di Denominator possono essere a valore reale o a valore complesso.

Variabile di visualizzazione della funzione di trasferimento, specificata in uno dei seguenti modi:

  • 's': predefinita per modelli a tempo continuo

  • 'z': predefinita per modelli a tempo discreto

  • 'p': equivalente a 's'

  • 'q': equivalente a 'z'

  • 'z^-1': inversa di 'z'

  • 'q^-1': equivalente a 'z^-1'

Il valore di Variable si riflette nella visualizzazione e influisce inoltre sull'interpretazione dei vettori dei coefficienti Numerator e Denominator per i modelli a tempo discreto.

  • Per i valori Variable 's', 'z', 'p' o 'q', i coefficienti sono in ordine di potenza decrescente della variabile. Ad esempio, si consideri il vettore riga [ak ... a1 a0]. L'ordine dei polinomi è specificato come akzk+...+a1z+a0.

  • Per i valori Variable 'z^-1' o 'q^-1', i coefficienti sono in ordine di potenza crescente della variabile. Ad esempio, si consideri il vettore riga [b0 b1 ... bk]. L'ordine dei polinomi è specificato come b0+b1z1+...+bkzk.

Ad esempio, vedere Definizione dell'ordinamento dei polinomi nella funzione di trasferimento a tempo discreto, Modello di funzione di trasferimento utilizzando un'espressione razionale e Modello di funzione di trasferimento a tempo discreto utilizzando un'espressione razionale.

Ritardo di trasporto, specificato in uno dei seguenti modi:

  • Scalare: specificare il ritardo di trasporto per un sistema SISO o lo stesso ritardo di trasporto per tutte le coppie input/output di un sistema MIMO.

  • Array Ny x Nu: specificare ritardi di trasporto separati per ciascuna coppia input/output di un sistema MIMO. In questo caso, Ny è il numero di output e Nu è il numero di input.

Per i sistemi a tempo continuo, specificare i ritardi di trasporto nell'unità di tempo specificata dalla proprietà TimeUnit. Per i sistemi a tempo discreto, specificare i ritardi di trasporto in multipli interi del tempo di campionamento Ts.

Ritardo di input per ciascun canale di input, specificato in uno dei seguenti modi:

  • Scalare: specificare il ritardo di input di un sistema SISO o lo stesso ritardo per tutti gli input di un sistema a multiplo input.

  • Vettore Nu x 1: specificare ritardi di input separati per l'input di un sistema a multiplo input, dove Nu è il numero di input.

Per i sistemi a tempo continuo, specificare i ritardi di input nell'unità di tempo specificata dalla proprietà TimeUnit. Per i sistemi a tempo discreto, specificare i ritardi di input in multipli interi del tempo di campionamento Ts.

Per ulteriori informazioni, vedere Time Delays in Linear Systems.

Ritardo di output per ciascun canale di output, specificato in uno dei seguenti modi:

  • Scalare: specificare il ritardo di output di un sistema SISO o lo stesso ritardo per tutti gli output di un sistema a multiplo output.

  • Vettore Ny x 1: specificare ritardi di output separati per l'output di un sistema con multiplo output, dove Ny è il numero di output.

Per i sistemi a tempo continuo, specificare i ritardi di output nell'unità di tempo specificata dalla proprietà TimeUnit. Per i sistemi a tempo discreto, specificare i ritardi di output in multipli interi del tempo di campionamento Ts.

Per ulteriori informazioni, vedere Time Delays in Linear Systems.

Tempo di campionamento, specificato come:

  • 0 per sistemi a tempo continuo.

  • Uno scalare positivo che rappresenta il periodo di campionamento di un sistema a tempo discreto. Specificare Ts nell'unità di tempo definita dalla proprietà TimeUnit.

  • -1 per un sistema a tempo discreto con un tempo di campionamento non specificato.

Nota

La modifica di Ts non discretizza o ricampiona il modello. Per convertire tra le rappresentazioni a tempo continuo e a tempo discreto, utilizzare c2d e d2c. Per modificare il tempo di campionamento di un sistema a tempo discreto, utilizzare d2d.

Unità della variabile tempo, specificate in uno dei seguenti modi:

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

La modifica di TimeUnit non ha alcun effetto sulle altre proprietà, ma cambia il comportamento complessivo del sistema. Utilizzare chgTimeUnit per convertire tra le unità di tempo senza modificare il comportamento del sistema.

Nomi dei canali di input, specificati in uno dei seguenti modi:

  • Un vettore di caratteri, per i modelli a singolo input.

  • Un array di celle dei vettori di caratteri, per i modelli a multiplo input.

  • '', nessun nome specificato per qualsiasi canale di input.

In alternativa, è possibile assegnare i nomi agli input dei modelli a multiplo input utilizzando l'espansione automatica del vettore. Ad esempio, se sys è un modello a due input, inserire quanto segue.

sys.InputName = 'controls';

I nomi degli input si espandono automaticamente in {'controls(1)';'controls(2)'}.

È possibile utilizzare la notazione abbreviata u per fare riferimento alla proprietà InputName. Ad esempio, sys.u equivale a sys.InputName.

Utilizzare InputName per:

  • Identificare i canali sulla visualizzazione del modello e sui grafici.

  • Estrarre i sottosistemi dei sistemi MIMO.

  • Specificare i punti di connessione quando si interconnettono i modelli.

Unità del canale di input, specificate in uno dei seguenti modi:

  • Un vettore di caratteri, per i modelli a singolo input.

  • Un array di celle dei vettori di caratteri, per i modelli a multiplo input.

  • '', nessuna unità specificata per qualsiasi canale di input.

Utilizzare InputUnit per specificare le unità del segnale di input. InputUnit non ha alcun effetto sul comportamento del sistema.

Gruppi di canali di input, specificati come struttura. Utilizzare InputGroup per suddividere i canali di input di sistemi MIMO in gruppi e fare riferimento a ciascun gruppo per nome. I nomi dei campi di InputGroup sono i nomi dei gruppi e i valori dei campi sono i canali di input di ciascun gruppo. Ad esempio, inserire quanto segue per creare gruppi di input denominati controls e noise che includono rispettivamente i canali di input 1 e 2 e i canali di input 3 e 5.

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

È quindi possibile estrarre il sottosistema dagli input controls tutti gli output utilizzando quanto segue.

sys(:,'controls')

Per impostazione predefinita, InputGroup è una struttura senza campi.

Nomi dei canali di output, specificati in uno dei seguenti modi:

  • Un vettore di caratteri, per i modelli a singolo output.

  • Un array di celle dei vettori di caratteri, per i modelli a multiplo output.

  • '', nessun nome specificato per qualsiasi canale di output.

In alternativa, è possibile assegnare i nomi agli output dei modelli a multiplo output utilizzando l'espansione automatica del vettore. Ad esempio, se sys è un modello a due output, inserire quanto segue.

sys.OutputName = 'measurements';

I nomi degli output si espandono automaticamente in {'measurements(1)';'measurements(2)'}.

È inoltre possibile utilizzare la notazione abbreviata y per fare riferimento alla proprietà OutputName. Ad esempio, sys.y equivale a sys.OutputName.

Utilizzare OutputName per:

  • Identificare i canali sulla visualizzazione del modello e sui grafici.

  • Estrarre i sottosistemi dei sistemi MIMO.

  • Specificare i punti di connessione quando si interconnettono i modelli.

Unità del canale di output, specificate in uno dei seguenti modi:

  • Un vettore di caratteri, per i modelli a singolo output.

  • Un array di celle dei vettori di caratteri, per i modelli a multiplo output.

  • '', nessuna unità specificata per qualsiasi canale di output.

Utilizzare OutputUnit per specificare le unità del segnale di output. OutputUnit non ha alcun effetto sul comportamento del sistema.

Gruppi di canali di output, specificati come struttura. Utilizzare OutputGroup per suddividere i canali di output di sistemi MIMO in gruppi e fare riferimento a ciascun gruppo per nome. I nomi dei campi di OutputGroup sono i nomi dei gruppi e i valori dei campi sono i canali di output di ciascun gruppo. Ad esempio, creare gruppi di output denominati temperature e measurement che includono rispettivamente i canali di output 1 e i canali di output 3 e 5.

sys.OutputGroup.temperature = [1];
sys.OutputGroup.measurement = [3 5];

È quindi possibile estrarre il sottosistema da tutti gli input agli output measurement utilizzando quanto segue.

sys('measurement',:)

Per impostazione predefinita, OutputGroup è una struttura senza campi.

Nome del sistema, specificato come vettore di caratteri. Ad esempio, 'system_1'.

Testo specificato dall'utente che si desidera associare al sistema, specificato come vettore di caratteri o array di celle di vettori di caratteri. Ad esempio, 'System is MIMO'.

Dati specificati dall'utente che si desidera associare al sistema, specificati come qualsiasi tipo di dati di MATLAB.

Griglia di campionamento per array di modelli, specificata come array di strutture.

Utilizzare SamplingGrid per tracciare i valori delle variabili associate a ciascun modello in un array di modelli, compresi gli array di modelli a tempo lineare invariante identificati (IDLTI).

Impostare i nomi dei campi della struttura sui nomi delle variabili di campionamento. Impostare i valori dei campi sui valori delle variabili campionate associate a ciascun modello dell'array. Tutte le variabili di campionamento devono essere scalari numerici e tutti gli array di valori campionati devono corrispondere alle dimensioni dell'array del modello.

Ad esempio, è possibile creare un array di modelli lineari 11x1 sysarr, acquisendo istantanee di un sistema lineare a tempo variabile nei momenti t = 0:10. Il codice seguente memorizza i campioni temporali con i modelli lineari.

 sysarr.SamplingGrid = struct('time',0:10)

Analogamente, è possibile creare un array di modelli 6x9 M, campionando due variabili zeta e w in modo indipendente. Il codice seguente mappa i valori (zeta,w) su M.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

Quando si visualizza M, ciascuna voce dell'array include i valori zeta e w corrispondenti.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

Per gli array di modelli generati dalla linearizzazione di un modello Simulink® con più valori di parametri o di punti operativi, il software popola automaticamente SamplingGrid con i valori delle variabili corrispondenti a ciascuna voce dell'array. Ad esempio, i comandi di Simulink Control Design™ linearize (Simulink Control Design) e slLinearizer (Simulink Control Design) popolano SamplingGrid automaticamente.

Per impostazione predefinita, SamplingGrid è una struttura senza campi.

Funzioni oggetto

I seguenti elenchi contengono un sottoinsieme rappresentativo delle funzioni utilizzabili con i modelli tf. In linea generale, qualsiasi funzione applicabile a Modelli di sistemi dinamici è applicabile a un oggetto tf.

espandi tutto

stepRisposta al gradino di un sistema dinamico
impulseImpulse response plot of dynamic system; impulse response data
lsimCompute time response simulation data of dynamic system to arbitrary inputs
bodeRisposta in frequenza di Bode del sistema dinamico
nyquistNyquist response of dynamic system
nicholsNichols response of dynamic system
bandwidthFrequency response bandwidth
polePoles of dynamic system
zeroZeros and gain of SISO dynamic system
pzplotPlot pole-zero map of dynamic system
marginMargine di guadagno, margine di fase e frequenze di crossover
zpkZero-pole-gain model
ssModello stato-spazio
c2dConvertire il modello da tempo continuo a tempo discreto
d2cConvert model from discrete to continuous time
d2dResample discrete-time model
feedbackConnessione di feedback di più modelli
connectBlock diagram interconnections of dynamic systems
seriesCollegamento in serie di due modelli
parallelParallel connection of two models
pidtunePID tuning algorithm for linear plant model
rlocusLuogo della radice del sistema dinamico
lqrProgettazione del regolatore lineare quadratico (LQR)
lqgLinear-Quadratic-Gaussian (LQG) design
lqiControllo lineare-quadratico-integrale
kalmanDesign Kalman filter for state estimation

Esempi

comprimi tutto

Per questo esempio, si consideri il seguente modello di funzione di trasferimento SISO:

sys(s)=12s2+3s+4.

Specificare i coefficienti del numeratore e del denominatore in ordine di potenza decrescente di s e creare il modello dalla funzione di trasferimento.

numerator = 1;
denominator = [2,3,4];
sys = tf(numerator,denominator)
sys =
 
         1
  ---------------
  2 s^2 + 3 s + 4
 
Continuous-time transfer function.
Model Properties

Per questo esempio, si consideri il seguente modello di funzione di trasferimento SISO a tempo discreto:

sys(z)=2z4z3+3z-1.

Specificare i coefficienti del numeratore e del denominatore in ordine di potenza decrescente di z e il tempo di campionamento di 0,1 secondi. Creare il modello di funzione di trasferimento a tempo discreto.

numerator = [2,0];
denominator = [4,0,3,-1];
ts = 0.1;
sys = tf(numerator,denominator,ts)
sys =
 
        2 z
  ---------------
  4 z^3 + 3 z - 1
 
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties

Per questo esempio, si consideri un modello di funzione di trasferimento che rappresenta un sistema del secondo ordine con frequenza naturale e rapporto di smorzamento noti.

La funzione di trasferimento di un sistema del secondo ordine, espressa in termini del proprio rapporto di smorzamento ζ e della propria frequenza naturale ω0, è:

sys(s)=ω02s2+2ζω0s+ω02.

Creare la funzione di trasferimento del secondo ordine assumendo un rapporto di smorzamento ζ = 0,25 e una frequenza naturale ω0 = 3 rad/s.

zeta = 0.25;
w0 = 3;
numerator = w0^2;
denominator = [1,2*zeta*w0,w0^2];
sys = tf(numerator,denominator)
sys =
 
         9
  ---------------
  s^2 + 1.5 s + 9
 
Continuous-time transfer function.
Model Properties

Esaminare la risposta di questa funzione di trasferimento in un input a gradini.

stepplot(sys)

MATLAB figure

Il grafico mostra il tempo di smorzamento previsto per un sistema del secondo ordine con un basso rapporto di smorzamento.

Creare una funzione di trasferimento per il modello a multiplo input-multiplo output a tempo discreto:

sys(z)=[1z+0.3zz+0.3-z+2z+0.33z+0.3]

con tempo di campionamento ts = 0.2 secondi.

Specificare i coefficienti del numeratore come una matrice 2x2.

numerators = {1 [1 0];[-1 2] 3};

Specificare i coefficienti del denominatore comune come vettore riga.

denominator = [1 0.3];

Creare il modello di funzione di trasferimento MIMO a tempo discreto.

ts = 0.2;
sys = tf(numerators,denominator,ts)
sys =
 
  From input 1 to output...
          1
   1:  -------
       z + 0.3
 
       -z + 2
   2:  -------
       z + 0.3
 
  From input 2 to output...
          z
   1:  -------
       z + 0.3
 
          3
   2:  -------
       z + 0.3
 
Sample time: 0.2 seconds
Discrete-time transfer function.
Model Properties

Per ulteriori informazioni sulla creazione di funzioni di trasferimento MIMO, vedere Funzioni di trasferimento MIMO.

In questo esempio, si crea un modello di funzione di trasferimento MIMO concatenando i modelli della funzione di trasferimento SISO. Si consideri la seguente funzione di trasferimento a input/output singolo:

sys(s)=[s-1s+1s+2s2+4s+5].

Specificare il modello di funzione di trasferimento MIMO concatenando le voci SISO.

sys1 = tf([1 -1],[1 1]);		
sys2 = tf([1 2],[1 4 5]);
sys = [sys1;sys2]
sys =
 
  From input to output...
       s - 1
   1:  -----
       s + 1
 
           s + 2
   2:  -------------
       s^2 + 4 s + 5
 
Continuous-time transfer function.
Model Properties

Per ulteriori informazioni sulla creazione di funzioni di trasferimento MIMO, vedere Funzioni di trasferimento MIMO.

Per questo esempio, creare un modello di funzione di trasferimento a tempo continuo utilizzando espressioni razionali. Utilizzare un'espressione razionale può talvolta risultare più semplice e intuitivo che specificare i coefficienti polinomiali del numeratore e del denominatore.

Si consideri il sistema seguente:

sys(s)=ss2+2s+10.

Per creare il modello di funzione di trasferimento, specificare innanzitutto s come oggetto tf.

s = tf('s')
s =
 
  s
 
Continuous-time transfer function.
Model Properties

Creare il modello di funzione di trasferimento utilizzando s nell'espressione razionale.

sys = s/(s^2 + 2*s + 10)
sys =
 
        s
  --------------
  s^2 + 2 s + 10
 
Continuous-time transfer function.
Model Properties

Per questo esempio, creare un modello di funzione di trasferimento a tempo discreto utilizzando un'espressione razionale. Utilizzare un'espressione razionale può talvolta risultare più semplice e intuitivo che specificare i coefficienti polinomiali.

Si consideri il sistema seguente:

sys(z)=z-1z2-1.85z+0.9.Discrete-time transfer function

Per creare il modello di funzione di trasferimento, specificare innanzitutto z come oggetto tf e il tempo di campionamento Ts.

ts = 0.1;
z = tf('z',ts)
z =
 
  z
 
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties

Creare il modello di funzione di trasferimento utilizzando z nell'espressione razionale.

sys = (z - 1) / (z^2 - 1.85*z + 0.9)
sys =
 
        z - 1
  ------------------
  z^2 - 1.85 z + 0.9
 
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties

Per questo esempio, creare un modello di funzione di trasferimento con proprietà ereditate da un altro modello della funzione di trasferimento. Si consideri le due seguenti funzioni di trasferimento:

sys1(s)=2ss2+8sandsys2(s)=s-17s4+2s3+9.

Per questo esempio, creare sys1 con le proprietà TimeUnit e InputDelay impostate su 'minutes'.

numerator1 = [2,0];
denominator1 = [1,8,0];
sys1 = tf(numerator1,denominator1,'TimeUnit','minutes','InputUnit','minutes')
sys1 =
 
     2 s
  ---------
  s^2 + 8 s
 
Continuous-time transfer function.
Model Properties
propValues1 = [sys1.TimeUnit,sys1.InputUnit]
propValues1 = 1×2 cell
    {'minutes'}    {'minutes'}

Creare il secondo modello di funzione di trasferimento con le proprietà ereditate da sys1.

numerator2 = [1,-1];
denominator2 = [7,2,0,0,9];
sys2 = tf(numerator2,denominator2,sys1)
sys2 =
 
        s - 1
  -----------------
  7 s^4 + 2 s^3 + 9
 
Continuous-time transfer function.
Model Properties
propValues2 = [sys2.TimeUnit,sys2.InputUnit]
propValues2 = 1×2 cell
    {'minutes'}    {'minutes'}

Si noti che il modello di funzione di trasferimento sys2 ha le stesse proprietà di sys1.

È possibile utilizzare un loop for per specificare un array dei modelli della funzione di trasferimento.

Innanzitutto, preallocare l'array della funzione di trasferimento con degli zeri.

sys = tf(zeros(1,1,3));

I primi due indici rappresentano il numero di output e di input dei modelli, mentre il terzo indice è il numero di modelli presenti nell'array.

Creare il modello di funzione di trasferimento utilizzando un'espressione razionale nel loop for.

s = tf('s');                                                  
for k = 1:3                                                             
    sys(:,:,k) = k/(s^2+s+k);                                          
end
sys
sys(:,:,1,1) =
 
       1
  -----------
  s^2 + s + 1
 

sys(:,:,2,1) =
 
       2
  -----------
  s^2 + s + 2
 

sys(:,:,3,1) =
 
       3
  -----------
  s^2 + s + 3
 
3x1 array of continuous-time transfer functions.
Model Properties

Per questo esempio, calcolare la funzione di trasferimento del seguente modello stato-spazio:

A=[-2-11-2],B=[112-1],C=[10],D=[01].

Creare il modello stato-spazio utilizzando le matrici stato-spazio.

A = [-2 -1;1 -2];
B = [1 1;2 -1];
C = [1 0];
D = [0 1];
ltiSys = ss(A,B,C,D);

Convertire il modello stato-spazio ltiSys n una funzione di trasferimento.

sys = tf(ltiSys)
sys =
 
  From input 1 to output:
        s
  -------------
  s^2 + 4 s + 5
 
  From input 2 to output:
  s^2 + 5 s + 8
  -------------
  s^2 + 4 s + 5
 
Continuous-time transfer function.
Model Properties

Per questo esempio, estrarre i componenti misurati e di rumore di un modello polinomiale identificato in due funzioni di trasferimento separate.

Caricare il modello polinomiale Box-Jenkins ltiSys in identifiedModel.mat.

load('identifiedModel.mat','ltiSys');

ltiSys è un modello a tempo discreto identificato di forma: y(t)=BFu(t)+CDe(t), dove BF rappresenta il componente misurato e CD rappresenta il componente di rumore.

Estrarre i componenti misurati e di rumore come funzioni di trasferimento.

sysMeas = tf(ltiSys,'measured') 
sysMeas =
 
  From input "u1" to output "y1":
            -0.1426 z^-1 + 0.1958 z^-2
  z^(-2) * ----------------------------
           1 - 1.575 z^-1 + 0.6115 z^-2
 
Sample time: 0.04 seconds
Discrete-time transfer function.
Model Properties
sysNoise = tf(ltiSys,'noise')
sysNoise =
 
  From input "v@y1" to output "y1":
           0.04556 + 0.03301 z^-1
  ----------------------------------------
  1 - 1.026 z^-1 + 0.26 z^-2 - 0.1949 z^-3
 
Input groups:        
    Name     Channels
    Noise       1    
                     
Sample time: 0.04 seconds
Discrete-time transfer function.
Model Properties

Il componente misurato può servire come modello dell'impianto, mentre il componente di rumore può essere utilizzato come modello di disturbo per la progettazione del sistema di controllo.

Gli oggetti del modello di funzione di trasferimento includono i dati del modello che aiutano a tenere traccia di quanto rappresentato dal modello. Ad esempio, si possono assegnare i nomi agli input e agli output del modello.

Si consideri il seguente modello di funzione di trasferimento MIMO a tempo continuo:

sys(s)=[s+1s2+2s+21s]

Il modello ha un input - corrente e due output - coppia e velocità angolare.

Innanzitutto, specificare i coefficienti del numeratore e del denominatore del modello.

numerators = {[1 1] ; 1};
denominators = {[1 2 2] ; [1 0]};

Creare il modello di funzione di trasferimento, specificando i nomi degli input e degli output.

sys = tf(numerators,denominators,'InputName','Current',...
        'OutputName',{'Torque' 'Angular Velocity'})
sys =
 
  From input "Current" to output...
                s + 1
   Torque:  -------------
            s^2 + 2 s + 2
 
                      1
   Angular Velocity:  -
                      s
 
Continuous-time transfer function.
Model Properties

Per questo esempio, specificare l'ordinamento dei polinomi nei modelli della funzione di trasferimento a tempo discreto utilizzando la proprietà 'Variable'.

Si considerino le seguenti funzioni di trasferimento a tempo discreto con tempo di campionamento di 0,1 secondi:

sys1(z)=z2z2+2z+3sys2(z-1)=11+2z-1+3z-2.

Creare la prima funzione di trasferimento a tempo discreto specificando i coefficienti z.

numerator = [1,0,0];
denominator = [1,2,3];
ts = 0.1;
sys1 = tf(numerator,denominator,ts)
sys1 =
 
       z^2
  -------------
  z^2 + 2 z + 3
 
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties

I coefficienti di sys1 sono in ordine di potenza decrescente di z.

tf commuta la convenzione in base al valore della proprietà 'Variable'. Poiché sys2 è il modello di funzione di trasferimento inversa di sys1, specificare 'Variable' come 'z^-1' e utilizzare gli stessi coefficienti del numeratore e del denominatore.

sys2 = tf(numerator,denominator,ts,'Variable','z^-1')
sys2 =
 
           1
  -------------------
  1 + 2 z^-1 + 3 z^-2
 
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties

I coefficienti di sys2 sono ora in ordine di potenza crescente di z^-1.

In base a diverse convenzioni, è possibile specificare l'ordinamento dei polinomi nei modelli della funzione di trasferimento a tempo discreto utilizzando la proprietà 'Variable'.

In questo esempio, si crea un filtro passa-basso con un parametro a sincronizzabile:

F=as+a

Poiché i coefficienti del numeratore e del denominatore di un blocco tunableTF sono indipendenti, non è possibile utilizzare tunableTF per rappresentare F. Costruire invece F utilizzando l'oggetto del parametro reale sincronizzabile realp.

Creare un parametro reale sincronizzabile con un valore iniziale di 10.

a = realp('a',10)
a = 
       Name: 'a'
      Value: 10
    Minimum: -Inf
    Maximum: Inf
       Free: 1

Real scalar parameter.

Utilizzare tf per creare il filtro passa-basso sincronizzabile F.

numerator = a;
denominator = [1,a];
F = tf(numerator,denominator)
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 1 states, and the following blocks:
  a: Scalar parameter, 2 occurrences.
Model Properties

Type "ss(F)" to see the current value and "F.Blocks" to interact with the blocks.

F è un oggetto genss che presenta il parametro sincronizzabile a nella proprietà Blocks. È possibile collegare F con altri modelli sincronizzabili o numerici per creare modelli di sistemi di controllo più complessi. Per un esempio, vedere Control System with Tunable Components.

In questo esempio, si crea un modello di funzione di trasferimento MIMO a guadagno statico.

Si consideri la seguente matrice di guadagno statico a due input e due output m:

m=[2435]

Specificare la matrice di guadagno e creare il modello di funzione di trasferimento del guadagno statico.

m = [2,4;...
    3,5];
sys1 = tf(m)
sys1 =
 
  From input 1 to output...
   1:  2
 
   2:  3
 
  From input 2 to output...
   1:  4
 
   2:  5
 
Static gain.
Model Properties

È possibile utilizzare il modello di funzione di trasferimento del guadagno statico sys1 ottenuto in precedenza per collegarlo in cascata a un altro modello della funzione di trasferimento.

Per questo esempio, creare un altro modello di funzione di trasferimento a tempo discreto a due input e due output e utilizzare la funzione series per collegare i due modelli.

numerators = {1,[1,0];[-1,2],3};
denominator = [1,0.3];
ts = 0.2;
sys2 = tf(numerators,denominator,ts)
sys2 =
 
  From input 1 to output...
          1
   1:  -------
       z + 0.3
 
       -z + 2
   2:  -------
       z + 0.3
 
  From input 2 to output...
          z
   1:  -------
       z + 0.3
 
          3
   2:  -------
       z + 0.3
 
Sample time: 0.2 seconds
Discrete-time transfer function.
Model Properties
sys = series(sys1,sys2)
sys =
 
  From input 1 to output...
       3 z^2 + 2.9 z + 0.6
   1:  -------------------
       z^2 + 0.6 z + 0.09
 
       -2 z^2 + 12.4 z + 3.9
   2:  ---------------------
        z^2 + 0.6 z + 0.09
 
  From input 2 to output...
       5 z^2 + 5.5 z + 1.2
   1:  -------------------
       z^2 + 0.6 z + 0.09
 
       -4 z^2 + 21.8 z + 6.9
   2:  ---------------------
        z^2 + 0.6 z + 0.09
 
Sample time: 0.2 seconds
Discrete-time transfer function.
Model Properties

Da R2025a

Questo esempio mostra come ottenere un modello della funzione di trasferimento troncata di un modello stato-spazio rado. Questo esempio utilizza un modello rado ottenuto dalla linearizzazione di un modello termico di distribuzione del calore in un'asta cilindrica circolare.

Caricare i dati del modello.

load cylindricalRod.mat
sys = sparss(A,B,C,D,E);
w = logspace(-7,-1,20);
size(sys)
Sparse state-space model with 3 outputs, 1 inputs, and 7522 states.

Analizzare la risposta in frequenza del modello.

sigmaplot(sys,w)

MATLAB figure

Per ottenere un'approssimazione troncata, utilizzare tf e specificare la banda di frequenza di interesse. Per questo modello, è possibile utilizzare un intervallo di frequenza da 0 rad/s a 0,01 rad/s per ottenere l'approssimazione di ordine basso.

tsys = tf(sys,Focus=[0 1e-2],Display="off");

Confrontare la risposta in frequenza.

sigmaplot(sys,tsys,w)

MATLAB figure

Questo modello termico presenta un decadimento molto rapido, oltre 0,001 rad/s. Per impostazione predefinita, il modello ridotto ottenuto utilizzando tf non fornisce una buona corrispondenza per questo decadimento. Per mitigare questo problema, è possibile utilizzare l'argomento RollOff di tf e specificare un valore minimo di decadimento oltre la banda di frequenza di interesse. Specificare un valore del gradiente di decadimento di -45, che corrisponde a una velocità di almeno –900 db/decade.

tsys2 = tf(sys,Focus=[0 1e-2],RollOff=-45,Display="off");
sigmaplot(sys,tsys2,w)

MATLAB figure

Il modello ridotto fornisce ora un'approssimazione molto più accurata del valore di decadimento. Tuttavia, in questo esempio, la nuova regolazione del gradiente di decadimento utilizzando tf richiede il ricalcolo degli zeri e dei poli. Questo può essere molto costoso dal punto di vista computazionale nel caso di modelli su larga scala. In alternativa, è possibile utilizzare il metodo di troncamento a polo zero di reducespec e regolare il decadimento senza costi computazionali aggiuntivi, dopo che il software ha calcolato i poli e gli zeri. Per un esempio, vedere Zero-Pole Truncation of Thermal Model.

Limiti

  • I modelli della funzione di trasferimento non sono adatti per i calcoli numerici. Una volta creati, devono essere convertiti nella forma stato-spazio prima di abbinarli ad altri modelli o di eseguire trasformazioni del modello. È quindi possibile riconvertire i modelli risultanti in forma di funzione di trasferimento a scopo di verifica

  • Un modello non lineare identificato non può essere convertito direttamente in un modello di funzione di trasferimento utilizzando tf. Per ottenere un modello di funzione di trasferimento:

    1. Convertire il modello non lineare identificato in un modello LTI identificato utilizzando linapp (System Identification Toolbox), idnlarx/linearize (System Identification Toolbox) o idnlhw/linearize (System Identification Toolbox).

    2. Quindi, convertire il modello risultante in un modello di funzione di trasferimento utilizzando tf.

Algoritmi

Per convertire i modelli radi, tf utilizzare l'algoritmo di Krylov-Schur [1] per le iterazioni di potenza inversa per calcolare i poli e gli zeri nella banda di frequenza specificata.

Riferimenti

[1] Stewart, G. W. “A Krylov--Schur Algorithm for Large Eigenproblems.” SIAM Journal on Matrix Analysis and Applications 23, no. 3 (January 2002): 601–14. https://doi.org/10.1137/S0895479800371529.

Cronologia versioni

Introduzione prima di R2006a

espandi tutto