spectralfact MATLAB_help文档DeepSeek翻译
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” 命令进行进一步调查。

基于分解形式的谱分解
假设您有以下 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)

隐式分解
考虑以下离散时间系统。
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)

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

输入参数
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公司官方立场,也不构成官方翻译版本。
建议使用者优先查阅官方原文。
更多推荐


所有评论(0)