# 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 的单数值。对于具有传递函数形式 (s) 的连续时间系统 TF, SS 或者 ZPK 系统来说,sigma 计算 (j ) 的奇异值作为 , 对于采样时间为 具有传递函数形式 (z) 的离散时间系统 TF, SS 或者 ZPK 系统来说,sigma 计算频率 在0和奈奎斯特频率 N = π/T 之间的(ej )的奇异值。

如果 sys 是单输入、单输出(SISO) 模型,则奇异值图与其伯德幅度响应相同。当在没有输出参数的情况下调用时,sigma 会在屏幕上生成奇异值图。

如果 sys 是具有 输入和 输出的多输入多输出(MIMO)模型,则奇异值图在图上显示对应于频率响应矩阵的每个奇异值的最小()线。对于 MIMO 系统,奇异值图扩展了伯德幅度响应,在鲁棒性分析中非常有用。


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 选择第二个响应类型 。向量 svH 和 svIH 包含频率为 wH 和 wIH 的奇异值响应数据。

画出两个系统的奇异值响应。

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 - 动态系统
传递函数模型 | 零极点增益模型 | 状态空间模型

动态系统,指定为 SISO 或 MIMO 动态系统模型。所支持的动态系统包括:

连续时间或离散时间数值 LTI 模型,如 tfzpkss 模型。

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 和奈奎斯特频率 之间。

# 另请参阅

nyquist | bode | nichols | evalfr | freqresp