Этот пример показывает, почему необходимо всегда использовать FEEDBACK, чтобы закрыть обратную связь.
Рассмотрите следующую обратную связь
где
K = 2; G = tf([1 2],[1 .5 3])
G = s + 2 --------------- s^2 + 0.5 s + 3 Continuous-time transfer function.
Можно вычислить передаточную функцию с обратной связью H
от r до y по крайней мере двумя способами:
Используя команду feedback
Используя формулу
Чтобы вычислить H
с помощью feedback
, ввести
H = feedback(G,K)
H = s + 2 --------------- s^2 + 2.5 s + 7 Continuous-time transfer function.
Чтобы вычислить H
из формулы, ввести
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.
Главная проблема с вычислением H
от формулы - то, что это раздувает порядок передаточной функции с обратной связью. В примере выше, H2
имеет дважды порядок H
. Это вызвано тем, что выражение G/(1+G*K)
выполнено как отношение этих двух передаточных функций G
и 1+G*K
. Если
затем G/(1+G*K)
оценен как:
В результате полюса G
добавляются и к числителю и к знаменателю H
. Можно подтвердить это путем рассмотрения представления 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.
Этот избыток полюсов и нулей может негативно повлиять на точность ваших результатов при контакте со старшими передаточными функциями, как показано в следующем примере. Этот пример включает передаточную функцию 17-го порядка G
. Когда вы сделали прежде, используйте оба подхода, чтобы вычислить передаточную функцию с обратной связью для K=1
:
load numdemo G H1 = feedback(G,1); % good H2 = G/(1+G); % bad
Чтобы иметь ориентир, также вычислите модель FRD, содержащую частотную характеристику G, и примените feedback
к данным о частотной характеристике непосредственно:
w = logspace(2,5.1,100); H0 = feedback(frd(G,w),1);
Затем сравните значения ответов с обратной связью:
h = sigmaplot(H0,'b',H1,'g--',H2,'r'); legend('Reference H0','H1=feedback(G,1)','H2=G/(1+G)','location','southwest') setoptions(h,'YlimMode','manual','Ylim',{[-60 0]})
Частотная характеристика H2
неточна для частот ниже 2e4 рад/с. Эта погрешность может быть прослежена до дополнительного (отмена) динамика, введенная рядом z=1. А именно, H2
имеет о вдвое большем количестве полюсов и нулей рядом z=1 как H1
. В результате H2(z)
имеет намного более плохую точность рядом z=1, который искажает ответ в низких частотах. Смотрите, что пример Использует Правильное Представление Модели для получения дополнительной информации.