exponenta event banner

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