Utilizzo del FEEDBACK per chiudere i loop di feedback
Questo esempio mostra il motivo per cui si dovrebbe sempre utilizzare FEEDBACK per chiudere i loop di feedback.
I due modi per chiudere i loop di feedback
Si consideri il seguente loop di feedback

dove
K = 2; G = tf([1 2],[1 .5 3])
G =
s + 2
---------------
s^2 + 0.5 s + 3
Continuous-time transfer function.
Model Properties
È possibile calcolare la funzione di trasferimento a loop chiuso H da r a y in almeno due modi:
Utilizzando il comando
feedbackUtilizzando la formula
Per calcolare H utilizzando feedback, digitare
H = feedback(G,K)
H =
s + 2
---------------
s^2 + 2.5 s + 7
Continuous-time transfer function.
Model Properties
Per calcolare H dalla formula, digitare
H2 = G/(1+G*K)
H2 =
s^3 + 2.5 s^2 + 4 s + 6
-----------------------------------
s^4 + 3 s^3 + 11.25 s^2 + 11 s + 21
Continuous-time transfer function.
Model Properties
I motivi per cui è preferibile utilizzare FEEDBACK
Il problema principale del calcolo di H dalla formula è che gonfia l'ordine della funzione di trasferimento a loop chiuso. Nell'esempio precedente, H2 a un ordine doppio rispetto ad H. Questo accade perché l'espressione G/(1+G*K) è valutata come rapporto delle due funzioni di trasferimento G e 1+G*K. Se
viene quindi G/(1+G*K) valutato come:
Di conseguenza, i poli di G sono aggiunti sia al numeratore che al denominatore di H. È possibile confermarlo osservando la rappresentazione ZPK:
zpk(H2)
ans =
(s+2) (s^2 + 0.5s + 3)
---------------------------------
(s^2 + 0.5s + 3) (s^2 + 2.5s + 7)
Continuous-time zero/pole/gain model.
Model Properties
Questo eccesso di poli e zeri può influire negativamente sull'accuratezza dei risultati quando si tratta di funzioni di trasferimento di ordine elevato, come mostrato nell'esempio successivo. Questo esempio prevede una funzione di trasferimento del 17-esimo ordine G. Come in precedenza, utilizzare entrambi gli approcci per calcolare la funzione di trasferimento a loop chiuso per K=1:
load numdemo G H1 = feedback(G,1); % good H2 = G/(1+G); % bad
Per avere un punto di riferimento, calcolare inoltre un modello FRD contenente la risposta in frequenza di G e applicare feedback direttamente ai dati della risposta in frequenza:
w = logspace(2,5.1,100); H0 = feedback(frd(G,w),1);
Confrontate quindi le magnitudini delle risposte a loop chiuso:
sigmaplot(H0,'b',H1,'g--',H2,'r'); legend('Reference H0','H1=feedback(G,1)','H2=G/(1+G)','location','southwest'); ylim([-60 0])

La risposta in frequenza di H2 è imprecisa per frequenze inferiori a 2e4 rad/s. Questa inaccuratezza può essere ricondotta alle ulteriori dinamiche (che si annullano) introdotte in prossimità di z=1. In particolare, H2 ha un numero di poli e zeri vicino a z=1 circa doppio rispetto a H1. Di conseguenza, H2(z) ha un'accuratezza molto più scarsa in prossimità di z=1 che distorce la risposta alle basse frequenze. Vedere l'esempio Using the Right Model Representation per maggiori dettagli.