spectralfact

线性系统的谱分解

语法

[G,S] = spectralfact(H)

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

G = spectralfact(F,[])

说明

[G,S] = spectralfact(H) 计算满足 H = H’ 的 LTI 模型的谱分解:

H = G’SG

在此分解中,S 是一个对称矩阵,G 是一个具有单位(恒等)前馈的平方、稳定且最小相位系统。G’ 是 G 的共轭,在连续时间中其传递函数为 G(–s)^T,在离散时间中为 G(1/z)^T。

[G,S] = spectralfact(F,R) 计算谱分解:

F’RF = G’SG

而无需显式构成 H = F’RF。与前一语法相同,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);

通过检查其所有极点和零点是否都位于左半平面 (Re(s) < 0),确认 G 是稳定且最小相位的。

p = pole(G)

p = 4×1 complex
10^2 ×

-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 的 I/O 维度匹配。

S

S = 1000000

通过比较原始系统与原始系统和分解系统之间的差值,确认 G 和 S 满足 H = G’SG。由于差值非常小,sigmaplot 会发出警告。

Hf = G’SG;
sigmaplot(H,H-Hf)

警告:频率响应的相对精度较差。这可能是因为响应在所有频率下都接近零或无穷大,或者因为状态空间实现是病态的。使用 “prescale” 命令进行进一步调查。

Figure contains an axes object. The axes object 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’RF 给出的系统的谱分解,而无需显式计算 H。

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

G 是一个具有恒等前馈的最小相位系统。

G.D

ans = 2×2

 1     0
 0     1

由于 F 有两个输入和两个输出,R 和 S 都是 2×2 矩阵。

通过比较原始分解与两个分解之间的差值,确认 G’SG = F’RF。差值的奇异值远低于原始系统的奇异值。

Ff = F’RF;
Gf = G’SG;
sigmaplot(Ff,Ff-Gf)

Figure contains an axes object. The axes object 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 处确实有一个额外的零点,这是 F 中 z = Inf 处不稳定零点的镜像。

pzplot(G)

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers This object represents G.

通过比较原始分解与两个分解之间的差值,确认 G’*G = F’*F。差值的奇异值远低于原始分解的奇异值。

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

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

输入参数

H — 自共轭 LTI 模型

tf | zpk | ss

自共轭 LTI 模型,指定为 tf、ss 或 zpk 模型。自共轭意味着等于其共轭,即 H = H’。共轭 H’ 在连续时间中是传递函数 H(–s)^T,在离散时间中是 H(1/z)^T。

H 可以是 SISO 或 MIMO,前提是其输出数量与输入数量相同。H 可以是连续或离散的,但有以下限制:

  • 在连续时间中,H 必须是双真且没有极点或零点在无穷远处或在虚轴上。
  • 在离散时间中,H 在单位圆上不能有极点或零点。

F — F 因子

tf | zpk | ss

分解形式 H = F’RF 中的 F 因子,指定为 tf、ss 或 zpk 模型。F 的输入不能多于输出。

R — R 因子

方阵

分解形式 H = F’RF 中的 R 因子,指定为一个对称方阵,其行数与 F 的输出数相同。

输出参数

G — LTI 因子

tf | zpk | ss

LTI 因子,以 tf、ss 或 zpk 模型形式返回。G 是一个稳定、最小相位的系统,满足:

  • H = G’SG,如果您使用语法 [G,S] = spectralfact(H)。
  • G’SG = F’RF,如果您使用语法 [G,S] = spectralfact(F,R)。
  • G’*G = F’*F,如果您使用语法 G = spectralfact(F,[])。

S — 数值因子

矩阵

数值因子,以对称矩阵形式返回,满足:

  • H = G’SG,如果您使用语法 [G,S] = spectralfact(H)。S 的维度与 H 和 G 的 I/O 维度匹配。
  • G’SG = F’RF,如果您使用语法 [G,S] = spectralfact(F,R)。S 在每个维度上的大小与 F 的输出数量匹配。

提示

  • spectralfact 假定 H 是自共轭的。在某些 H 不是自共轭的情况下,spectralfact 返回的 G 和 S 不满足 H = G’SG。因此,在使用 spectralfact 之前,请验证您的输入模型实际上是自共轭的。验证 H 的一种方法是在奇异值图上比较 H 和 H - H’。

sigmaplot(H,H-H’)

如果 H 是自共轭的,则图上的 H - H’ 线将远低于 H 线。

版本历史记录

R2016a 中推出

另请参阅

stabsep | modsep

主题

  • 算术运算

版权标注与来源说明

本文译文对应的原文内容,均来源于 MathWorks 官方网站(https://www.mathworks.com/)及官方帮助中心,原文版权均独家归属MathWorks 公司所有。

译文系基于原文进行的非官方翻译,仅为方便个人学习、理解MathWorks相关产品(含MATLAB等)的功能、操作及技术细节而制作,不代表MathWorks公司官方立场,也不构成官方翻译版本。

建议使用者优先查阅官方原文。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐