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.

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

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 в виде a tf, ss, или zpk модель. Самосопряженные средние значения, который равен его сопряженному, H = H'. Сопряженный H' передаточная функция H (–s) T в непрерывное время и H (1/z) T в дискретное время.

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

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

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

F фактор учтенной формы H = F'*R*FВ виде a tf, ss, или zpk модель. F не может иметь большего количества входных параметров, чем выходные параметры.

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

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

свернуть все

Фактор LTI, возвращенный как a 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