spectralfact

Спектральная факторизация линейных систем

Описание

пример

[G,S] = spectralfact(H) вычисляет спектральный факторизацию:

H = G'*S*G

модели LTI, удовлетворяющей H = H'. В этом факторизации S является симметричной матрицей и G является квадратной, стабильной и минимально-фазовой системой с единичным (единичным) сквозным соединением. G' является сопряженным G, который имеет передаточную функцию G (- s)T в непрерывном времени и G (1/ z)T в дискретном времени.

пример

[G,S] = spectralfact(F,R) вычисляет спектральный факторизацию:

F'*R*F = G'*S*G

без явного формирования H = F'*R*F. Как и в предыдущем синтаксисе, S является симметричной матрицей и G является квадратной, стабильной и минимально-фазовой системой с единичным сквозным соединением.

пример

G = spectralfact(F,[]) вычисляет устойчивую , минимально-фазовую систему G таким образом:

G'*G = F'*F.

Примеры

свернуть все

Примите во внимание следующую систему.

G0 = ss(zpk([-1 -5 1+2i 1-2i],[-100 1+2i 1-2i -10],1e3));
H = G0'*G0;

G0 имеет смесь стабильной и нестабильной динамики. H - самосопряженная система, динамика которой состоит из полюсов и нулей G0 и их отражения через воображаемую ось. Используйте спектральное факторизация, чтобы разделить стабильные полюсы и нули на G и нестабильные полюса и нули в G'.

[G,S] = spectralfact(H);

Подтвердите, что G является стабильной и минимальной фазой, путем проверки, что все ее полюсы и нули падают в левой полуплоскости (Re(s) < 0).

p = pole(G)
p = 4×1 complex
102 ×

  -0.0100 + 0.0200i
  -0.0100 - 0.0200i
  -0.1000 + 0.0000i
  -1.0000 + 0.0000i

z = zero(G)
z = 4×1 complex

  -1.0000 + 2.0000i
  -1.0000 - 2.0000i
  -5.0000 + 0.0000i
  -1.0000 + 0.0000i

G также имеет единичное сквозное соединение.

G.D
ans = 1

Потому что H является SISO, S является скаляром. Если H были MIMO, размерности S совпадает с размерностями ввода-вывода H.

S
S = 1000000

Подтвердите, что G и S удовлетворить H = G'*S*G путем сравнения исходной системы с различием между исходной и факторизованной системами. sigmaplot выдает предупреждение, потому что различие очень мала.

Hf = G'*S*G;
sigmaplot(H,H-Hf)
Warning: The frequency response has poor relative accuracy. This may be because the response is nearly zero or infinite at all frequencies, or because the state-space realization is ill conditioned. Use the "prescale" command to investigate further.

Figure contains an axes. The axes contains 2 objects of type line. These objects represent H, untitled1.

Предположим, что у вас есть следующая модель пространства состояний 2 вывода, 2 входа, F.

A = [-1.1  0.37;
     0.37 -0.95];
B = [0.72 0.71;
     0    -0.20];
C =  [0.12 1.40
      1.49 1.41];
D = [0.67 0.7172;
    -1.2  0];
F = ss(A,B,C,D);

Предположим далее, что у вас есть симметричная матрица 2 на 2, R.

R =   [0.65    0.61
       0.61   -3.42];

Вычислите спектральную факторизацию системы, заданную H = F'*R*F, без явных вычислений H.

[G,S] = spectralfact(F,R);

G является минимально-фазовой системой с единичным сквозным соединением.

G.D
ans = 2×2

     1     0
     0     1

Потому что F имеет два входа и два выхода, оба R и S представляют собой матрицы 2 на 2.

Подтвердите, что G'*S*G = F'*R*F путем сравнения исходного факторизации с различием между двумя факторизациями. Сингулярные значения различия намного ниже, чем в исходной системе.

Ff = F'*R*F;
Gf = G'*S*G;
sigmaplot(Ff,Ff-Gf)

Figure contains an axes. The axes contains 4 objects of type line. These objects represent Ff, untitled1.

Рассмотрите следующую систему в дискретном времени.

F = zpk(-1.76,[-1+i -1-i],-4,0.002);

F имеет полюса и нули вне модуля круга. Использование spectralfact для вычисления системной G со стабильными полюсами и нулями, такими что G'*G = F'*F.

G = spectralfact(F,[])
G =
 
  -3.52 z (z+0.5682)
  ------------------
   (z^2 + z + 0.5)
 
Sample time: 0.002 seconds
Discrete-time zero/pole/gain model.

В отличие от F, G не имеет полюсов или нулей вне модуля круга. G имеет дополнительный нуль в z = 0, что является отражением нестабильного нуля в z = Inf в F.

pzplot(G)

Figure contains an axes. The axes contains 2 objects of type line. This object represents G.

Подтвердите, что G'*G = F'*F путем сравнения исходного факторизации с различием между двумя факторизациями. Сингулярные значения различия намного ниже значений исходной факторизации.

Ff = F'*F;
Gf = G'*G;
sigmaplot(Ff,Ff-Gf)

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Ff, untitled1.

Входные параметры

свернуть все

Самосопряженная модель LTI, заданная как tf, ss, или zpk модель. Сопряженное с собой означает, что равно его сопряженному, H = H'. Сопряженная H' - передаточная функция H (- s)T в непрерывном времени и H (1/ z)T в дискретном времени.

H может быть SISO или MIMO, при условии, что она имеет столько выходов, сколько входов. H может быть непрерывным или дискретным со следующими ограничениями:

  • За непрерывное время H должен быть бипропером без полюсов или нулей в бесконечности или на воображаемой оси.

  • В дискретном времени H не должно иметь полюсов или нулей на модуль круге.

F коэффициент факторизированной формы H = F'*R*F, заданный как tf, ss, или zpk модель. F не может иметь больше входов, чем выходов.

R коэффициент факторизированной формы H = F'*R*F, заданная как симметричная квадратная матрица с таким количеством строк, сколько выходов в F.

Выходные аргументы

свернуть все

Коэффициент LTI, возвращенный как tf, ss, или zpk модель. G является устойчивой , минимально-фазовой системой, которая удовлетворяет:

  • H = G'*S*G, если вы используете синтаксис [G,S] = spectralfact(H).

  • G'*S*G = F'*R*F, если вы используете синтаксис [G,S] = spectralfact(F,R).

  • G'*G = F'*F, если вы используете синтаксис G = spectralfact(F,[]).

Числовой коэффициент, возвращенный как симметричная матрица, которая удовлетворяет:

  • H = G'*S*G, если вы используете синтаксис [G,S] = spectralfact(H). Размерности S соответствовать размерностям ввода-вывода H и G.

  • G'*S*G = F'*R*F, если вы используете синтаксис [G,S] = spectralfact(F,R). Размер S вдоль каждой размерности совпадает с количеством выходов F.

Совет

  • spectralfact принимает, что H самосопряженный. В некоторых случаях, когда H не сопряжен с собой, spectralfact возвращает G и S которые не удовлетворяют H = G'*S*G. Поэтому проверьте, что ваша входная модель на самом деле самосопряжена перед использованием spectralfact. Один из способов проверить H - чтобы сравнить H на H - H' на графике с сингулярным значением.

    sigmaplot(H,H-H')

    Если H является самосопряженным, H - H' линия на графике лежит далеко ниже H линия.

Введенный в R2016a