# pzmap
动态系统的零、极点图
函数库: TyControlSystems
# 语法
pzmap(sys)
pzmap(sys1, ..., sysN)
pzmap(___, opts; ishold, kwargs...)
p, z = pzmap(sys; flag=false)
# 说明
pzmap(sys) 创建连续或离散时间动态系统模型 sys 的极点零点图。x 和 o 分别表示极点和零点,如下图所示。
由上图所示,在以下情况下,开环线性时不变系统是稳定的:
- 在连续时间内,复数 s 平面上的所有极点都必须在左半平面 (蓝色区域) 中,以确保稳定性。如果不同的极点位于虚轴上,即极点的实部为零,则系统是临界稳定的;
- 在离散时间内,复数 z 平面中的所有极点都必须位于单位圆 (蓝色区域) 内。如果系统在单位圆上有一个或多个极点,则系统临界稳定。 示例
pzmap(sys1, ..., sysN) 绘制多个系统的零极点图。
pzmap(___, opts; ishold, kwargs...) 为图形绘制指定了绘图选项。
p,z = pzmap(sys; flag=false) 将系统极点和传输零点作为列向量 p 和 z 返回。 示例
# 示例
动态系统的零极点图
绘制由以下传递函数表示的连续时间系统的极点和零点:
using TyControlSystems
H = tf([2, 5, 1], [1, 3, 5])
pzmap(H)
pzgrid(true)
打开网格显示恒定阻尼比(zeta)和恒定固有频率(wn)的线。 这个系统有两个实零点,在图上用 o 表示。该系统还有一对复极点,用 x 标记。
多模型的极点-零点图
对于本例,加载一个 3 乘 1 的传递函数模型数组。
using TyControlSystems
pkg_dir = pkgdir(TyControlSystems)
source_path = pkg_dir * "/examples/resources/System Attributes/tfdata/tfArray.jl"
include(source_path)
sys;
size(sys)
(3, 1)
用不同的颜色在数组中绘制每个模型的极点和零点
pzmap(sys[1], "r", sys[2], "g", sys[3], "b")
pzgrid(true)
flag=false 时 pzgrid 调用 sgrid 在极零图的 s 域绘制恒定阻尼比和固有频率的直线。
传递函数的极点和零点
使用 pzmap 计算以下传递函数的极点和零点:
using TyControlSystems
sys = tf([4.2, 0.25, -0.004], [1, 9.6, 17])
p, z = pzmap(sys; fig=false)
([-2.342358854511099, -7.2576411454889005], [0.013111769298521241, -0.07263557882233128])
识别接近抵消的极点-零点对
这个例子使用了一个八层楼的建筑模型,每层楼有三个自由度:两个位移和一个旋转。 这些位移中的任何一个的 I/O 关系都表示为具有 48 个状态的模型,其中每个状态表示一个位移或其变化率(速度)。
加载建筑模型。
using TyControlSystems
pkg_dir = pkgdir(TyControlSystems)
source_path = pkg_dir * "/examples/resources/System Attributes/pzmap/building.jl"
include(source_path)
G;
size(G)
(1, 1)
查看状态数
nstates(G)
48
画出系统的极点和零点。
pzmap(G)
从图中可以观察到,有许多近乎抵消的极零对可以被潜在地消除以简化模型,而对整体模型响应没有影响。 pzmap 有助于可视化地识别这种近乎抵消的极零对,从而进行极点、零点的化简。
# 输入参数
sys - 动态系统传递函数模型 | 零极点增益模型 | 状态空间模型
opts - 绘图选项 PZOptions 结构体
绘图选项,指定为 PZOptions 结构体,具有以下字段:
- FreqUnits:频率单位,指定为以下字符串之一:"rad/TimeUnit"、"cycles/TimeUnit"、"Hz"、"kHz"、"MHz"、"GHz"、"rpm" 等;
- TimeUnits:频率刻度,指定为以下字符串之一:"nanoseconds"、"microseconds"、"milliseconds"、"seconds"、"minutes"、"hours"、"days"、"weeks"、"months"、"years";
# 名称-值对组参数
ishold - 是否保留原绘图布尔值
ishold 用于设置函数是否在原绘图基础上绘制,指定为布尔值,默认为 false。
数据类型: Bool
kwargs - 通用绘图选项名称-值对组参数
通用绘图选项,指定为名称-值对组参数。有关配置此参数的详细信息,请参阅 scatter 函数的名称-值对组参数。
fig - 绘图或返回数据布尔值
绘图标志位,指定为布尔值。
数据类型: Bool
# 输出参数
p - 系统的极点向量
系统的极点,返回为向量,以系统时间单位(目前只支持:秒(seconds))的倒数为单位进行表示,向量元素按幅值降序排列。对于幅值相同的极点,其顺序优先级为:不稳定的极点==不稳定极点的共轭>稳定的极点==稳定极点的共轭。
数据类型: Float | Int | Complex
z - 系统的传输零点向量
系统的传输零点,返回为向量,以系统时间单位(目前只支持:秒(seconds))的倒数为单位进行表示,向量元素按幅值降序排列。对于幅值相同的零点,其顺序优先级为:不稳定的零点==不稳定零点的共轭>稳定的零点==稳定零点的共轭。
数据类型: Float | Int | Complex
# 其他描述
- 使用函数 sgrid 或 zgrid 在极点零点图上的 s 域或 z 域中绘制具有恒定阻尼比和固有频率的线;
- pzmap 兼容 pzmapdata 与 pzplot 的所有功能,其中 pzmapdata 返回响应数据,而 pzplot 返回零极点分布图。