# sigma
动态系统的奇异值图
函数库: TyControlSystems
# 语法
sigma(sys)
sigma(sys1,sys2,...,sysN)
sigma(sys1,fmt1,...,sysN,fmtN)
sigma(___,w,type,fmt,opts; ishold, kwargs...)
sv, wout = sigma(___; fig = false)
# 说明
Sigma 计算动态系统系统的频率响应的奇异值。对于 FRD 模型,sigma 在频率 Sys.frequency 上计算 Sys.sresponse 的单数值。对于具有传递函数形式
如果 sys 是单输入、单输出(SISO) 模型,则奇异值图与其伯德幅度响应相同。当在没有输出参数的情况下调用时,sigma 会在屏幕上生成奇异值图。
如果 sys 是具有
sigma(sys) 绘制动态系统模型 sys 的频率响应的奇异值。该模型可以是连续的或离散的,也可以是 SISO 或 MIMO。频率点根据系统极点和零点自动选择,如果系统是 FRD,则根据系统频率自动选择。
如果 sys 是具有复系数的模型,则在:
- 对数频率刻度,该图显示两个分支,一个用于正频率,一个用于负频率。该图还显示箭头,以指示每个分支的频率值递增方向。请参阅具有复系数的模型的奇异值图;
- 线性频率标度,该图显示单个分支,其对称频率范围以零频率值为中心。
sigma(sys1,sys2,...,sysN) 在同一张奈奎斯特图上绘制多个 LTI 系统模型,所有系统不需要有相同的输入输出数量,每个模型可以是连续时间系统或离散时间系统。
sigma(sys1,fmt1,...,sysN,fmtN) 为每个系统绘图指定独特的颜色、线条样式和标记。
sigma(___, w, type, fmt, opts; ishold, kwargs...) 绘制 w 所指定频率的修正奇异值响应。修正奇异值的类型由 type 指定,opts 指定用于绘制 Bode 响应的附加选项。使用 ishold 决定是否保留原绘图,kwargs 指定绘图的属性,如线型和标记类型等。有关 kwargs 参数配置的详细信息,请参阅 plot 函数的名称-值对组参数。
- 如果 w 是 二元素元组,则 sigma 频率响应范围限制在(wmin, wmax)之间;
- 如果 w 是频率向量,则 sigma 绘制每个指定频率处的响应。向量 w 可以包含负频率和正频率。
可以将 w 与前面语法中的任何输入参数组合一起使用。
sv, wout = sigma(__, fig = false) 返回向量 wout 中每个频率处响应的奇异值。输出 sv 是一个矩阵,值 sv(:, k) 在频率 wout(k) 处按降序给出奇异值。该功能根据系统动态自动确定 wout 中的频率,返回 w 指定频率处的奇异值 sv。
- 如果 w 是 二元素元组,则频率响应范围限制在(wmin,wmax) 之间;
- 如果 w 是频率的向量,则 wout=w。
# 示例
动态系统的奇异值图
创建以下连续时间 SISO 动态系统的奇异值图。
using TyControlSystems
H = tf([1, 0.1, 7.5],[1, 0.12, 9, 0, 0]);
sigma(H)
sigma 根据系统动态自动选择绘图范围。
特定频率的 Sigma 图
在指定的频率范围内创建一个奇异值图。对于特定频率范围内的动态,请使用此方法。
using TyControlSystems
H = tf([-0.1,-2.4,-181,-1950],[1,3.3,990,2600])
指定一个频率点向量用于评估和绘制频率响应。
w = [1, 5, 10, 15, 20, 23, 31, 40, 44, 50, 85, 100];
sigma(H,w,".-")
sigmagrid(true)
Sigma 仅在指定频率处绘制频率响应。
获取奇异值数据
计算 SISO 系统频率响应的奇异值。如果没有指定频率,sigma 将根据系统动态选择频率,并在第二个输出参数中返回它们。
using TyControlSystems
H = tf([1, 0.1, 7.5],[1, 0.12, 9, 0, 0]);
sv,wout = sigma(H, fig = false);
因为 H 是 SISO 模型,所以 sv 的第一维是1。第二个维度是 wout 中的频率数。
size(sv)
(1, 40)
length(wout)
40
因此,沿着 sv 的第二维的每一项都给出了 wout 中相应频率下响应的奇异值。
MIMO 系统的奇异值
对于本例,创建一个 3 输出 4 输入系统。
using TyControlSystems
using TyBase
using Random
Random.seed!(1234)
H = rss(2, 3, 4);
对于这个系统,sigma 在同一个图中绘制频率响应矩阵的奇异值。
sigma(H)
计算在 1 到 10 弧度之间的 20 个频率上的奇异值。
w = logspace(0, 1, 20);
sv, wout = sigma(H, w, fig = false);
sv 是一个矩阵,其中行对应频响矩阵的奇异值,列为频率值。检查 sv 的尺寸。
size(sv)
(3, 20)
因此,如 sv [:, 10] 是在 w 中第 10 个频率处计算响应的奇异值。
计算和绘制奇异值
根根据下面的双输入、双输出动态系统。
计算 H(s) 和 I + H(s) 的奇异值响应。
using TyControlSystems
using TyBase
H = [tf(0) tf([3, 0], [1, 1, 10]); tf([1, 1], [1, 5]) tf(2, [1, 6])];
Ny, Nu = size(H)
svH, wH = sigma(H, fig=false);
svIH, wIH = sigma(H + eye(Ny, Nu), fig=false);
在最后一个命令中,输入 2 选择第二个响应类型
画出两个系统的奇异值响应。
sigma(H, H + eye(Ny, Nu), (10^-2,10^2))

复系数模型的奇异值图
在同一图上创建具有复系数的模型和具有实系数的模型的奇异值图。
using TyControlSystems
using Random
using TyPlot
Random.seed!(0)
A = [-3.50 -1.25-0.25im; 2 0]
B = [1;0]
C = [-0.75-0.5im 0.625-0.125im]
D = 0.5
Gc = ss(A,B,C,D)
Gr = rss(4)
sigma(Gc,Gr)
legend("Complex-coefficient model","Real-coefficient model")

# 输入参数
sys - 动态系统传递函数模型 | 零极点增益模型 | 状态空间模型
w - 频率元组 | 向量
用于计算和绘制频率响应的频率,指定为向量或由两个元素构成的元组,以 rad/TimeUnit 为单位进行表示,其中 TimeUnit 是 sys 的时间单位。
- 如果 w 是(wmin,wmax)形式的二元素元组,则 sigma 频率响应范围限制在 wmin 和 wmax 之间;
- 如果 w 是频率向量,则该函数计算每个指定频率下的响应。例如,使用 logspace 生成具有对数间隔频率值的行向量。向量 w 可以包含正频率和负频率。
数据类型: Float | Int
fmt - 线型、颜色和标记字符串
线型、颜色和标记,指定为包含符号的字符串。符号可以按任意顺序显示。您不需要同时指定所有三个特征(线型、颜色和标记)。例如,如果忽略线型,只指定标记,则绘图只显示标记,不显示线条。
示例: "--ro" 是带有圆形标记的红色虚线
| 线型 | 说明 | 表示的线条 |
|---|---|---|
| "-" | 实线 | ![]() |
| "--" | 虚线 | ![]() |
| ":" | 点线 | ![]() |
| "-." | 点划线 | ![]() |
| "none" | 无线条 | 无线条 |
| 标记 | 符号 | 说明 |
|---|---|---|
| "." | ![]() | point |
| "," | pixel | |
| "o" | ![]() | circle |
| "v" | ![]() | triangle_down |
| "^" | ![]() | triangle_up |
| "<" | ![]() | triangle_left |
| ">" | ![]() | triangle_right |
| "1" | ![]() | tri_down |
| "2" | ![]() | tri_up |
| "3" | ![]() | tri_left |
| "4" | ![]() | tri_right |
| "8" | ![]() | octagon |
| "s" | ![]() | square |
| "p" | ![]() | pentagon |
| "P" | ![]() | plus (filled) |
| "*" | ![]() | star |
| "h" | ![]() | hexagon1 |
| "H" | ![]() | hexagon2 |
| "+" | ![]() | plus |
| "x" | ![]() | x |
| "X" | ![]() | x (filled) |
| "D" | ![]() | diamond |
| "d" | ![]() | thin_diamond |
| "|" | ![]() | vline |
| "_" | ![]() | hline |
| "none" | 无标记 | none |
数据类型: String
type-绘制修正奇异值的选项整数
绘制修正奇异值的选项,指定为以下整数之一:
- 0:绘制频率响应
的奇异值; - 1:绘制频率响应
-1 的奇异值,其中 是 sys 的频率响应; - 2:绘制频率响应
的奇异值; - 3:绘制频率响应
-1 的奇异值。
数据类型: Int
opts-Sigma绘图选项SigmaOptions 结构体
指定绘制动态系统奇异值图的选项集,指定为 SigmaOptions 结构体,其具有以下字段:
- FreqUnits:频率单位,指定为以下字符串之一:"rad/TimeUnit"、"cycles/TimeUnit"、"Hz"、"kHz"、"MHz"、"GHz"、"rpm" 等;
- FreqScale:频率刻度,指定为以下字符串之一:"log" 或 "linear";
- MagUnits:幅值单位,指定为以下字符串之一:"dB" 或 "abs";
- MagScale:幅值刻度,指定为以下字符串之一:"log" 或 "linear";
有关 SigmaOptions 结构体的详细信息,请参阅 sigmaoptions。
# 名称-值对组参数
ishold - 是否保留原绘图布尔值
ishold 用于设置函数是否在原绘图基础上绘制,指定为布尔值,默认为 false。
数据类型: Bool
kwargs - 通用绘图选项名称-值对组参数
通用绘图选项,指定为名称-值对组参数。有关配置此参数的详细信息,请参阅 plot 函数的名称-值对组参数。
fig - 绘图或返回数据布尔值
fig 用于设置函数是否进行绘图,指定为布尔值,默认为 true。
数据类型: Bool
# 输出参数
sv - 频率响应的奇异值矩阵
频率响应的奇异值,返回为 min(Nu, Ny) × Nf 矩阵,以绝对单位进行表示,其中 Ny 为系统输出数,Nu 为系统输入数,Nf 为频率点的数量。
数据类型: Float | Int
wout - 频率向量向量
计算系统响应的频率,返回为向量,以 rad/TimeUnit 为单位进行表示,其中 TimeUnit 是 sys 的时间单位。若未指定频率,sigma 根据模型动力学选择频率值;否则,返回原频率。wout 还包含具有复系数的模型的负频率值。
数据类型: Float | Int
# 其他描述
sigma 兼容 sigmadata 与 sigmaplot 的所有功能,其中 sigmadata 返回响应数据,而 sigmaplot 返回奇异值图。
# 算法
sigma 使用 Syslab 函数 svd 来计算复频率响应的奇异值。
- 对于具有传递函数
的连续时间 tf、ss 或 zpk 模型,sigma 计算 的奇异值作为频率 ω 的函数; - 对于具有传递函数
和采样时间 Ts 的离散时间 tf、ss或 zpk 模型,sigma 计算 的奇异值。频率 ω 介于 0 和奈奎斯特频率 之间。

















.png)





.png)



