MATLAB进行控制系统频域分析
MATLABMATLAB 进行控制系统频域分析进行控制系统频域分析 一、基于一、基于 MATLABMATLAB 的线性系统的频域分析基本知的线性系统的频域分析基本知 识识 (1)频率特性函数(1)频率特性函数 G( j) 。。 设线性系统传递函数为:设线性系统传递函数为: b 0 smb 1s m1b m1s bmG(s) a 0 sna 1s na n1s an 则频率特性函数为:则频率特性函数为: b 0 ( j)mb 1 ( j)m1b m1 ( j)b mG( jw) a 0 ( j)n a 1 ( j)n a n1 ( j) a n 由下面的由下面的 MATLABMATLAB 语句可直接求出语句可直接求出 G(jw)G(jw)。。 i=sqrt(-1)i=sqrt(-1)% %求取求取-1-1的平方的平方 根根 GW=polyval(numGW=polyval(num,, i*w)./polyval(deni*w)./polyval(den,,i*w)i*w) 其中(其中(numnum,,denden)为系统的传递函数模型。而)为系统的传递函数模型。而 w w 为频率点构成的向量,点右除(为频率点构成的向量,点右除(././)运算符表)运算符表 示操作元素点对点的运算。示操作元素点对点的运算。 从数值运算的角度来从数值运算的角度来 看,上述算法在系统的极点附近精度不会很理看,上述算法在系统的极点附近精度不会很理 想,想,甚至出现无穷大值,甚至出现无穷大值,运算结果是一系列复数运算结果是一系列复数 返回到变量返回到变量 GWGW 中。中。 (2)用(2)用 MATLABMATLAB 作奈魁斯特图。作奈魁斯特图。 控制系统工具箱中提供了一个控制系统工具箱中提供了一个MATLABMATLAB 函数函数 nyquist( )nyquist( ),该函数可以用来直接求解,该函数可以用来直接求解 NyquistNyquist 阵列或绘制奈氏图。阵列或绘制奈氏图。 当命令中不包含左端返回当命令中不包含左端返回 变量时,变量时,nyquistnyquist()函数仅在屏幕上产生奈氏()函数仅在屏幕上产生奈氏 图,命令调用格式为:图,命令调用格式为: nyquist(num,den)nyquist(num,den) 或者或者 nyquist(num,den,w) nyquist(num,den,w) nyquist(G)nyquist(G) 该命令将画出下列开环系统传递函数的奈氏曲该命令将画出下列开环系统传递函数的奈氏曲 线:线: (s) G(s) num den(s) nyquist(G,w) nyquist(G,w) 如果用户给出频率向量如果用户给出频率向量 w,w,则则 w w 包含了要分包含了要分 析的以弧度析的以弧度/ /秒表示的诸频率点。在这些频率点秒表示的诸频率点。在这些频率点 上,上,将对系统的频率响应进行计算,将对系统的频率响应进行计算,若没有指定若没有指定 的的 w w 向量,则该函数自动选择频率向量进行计向量,则该函数自动选择频率向量进行计 算。算。 w w 包含了用户要分析的以弧度包含了用户要分析的以弧度/ /秒表示的诸秒表示的诸 频率点频率点,MATLAB,MATLAB 会自动计算这些点的频率响应。会自动计算这些点的频率响应。 当命令中包含了左端的返回变量时,即当命令中包含了左端的返回变量时,即: : 或或 函数运行后不在屏幕上产生图形,函数运行后不在屏幕上产生图形, 而是将计而是将计 算结果返回到矩阵算结果返回到矩阵 rere、、imim 和和 w w 中。矩阵中。矩阵 rere 和和 imim 分别表示频率响应的实部和虚部,它们都是分别表示频率响应的实部和虚部,它们都是 由向量由向量 w w 中指定的频率点计算得到的。中指定的频率点计算得到的。 在运行结果中,在运行结果中,w w 数列的每一个值分别对应数列的每一个值分别对应 rere、、imim 数列的每一个值。数列的每一个值。 例例 5.15.1 考虑二阶典型环节考虑二阶典型环节: : G(s) s 0 1 .8s 1 2 [re,im,w]=nyquist(G)[re,im,w]=nyquist(G) [re,im,w]=nyquist(G,w) [re,im,w]=nyquist(G,w) 试利用试利用 MATLABMATLAB 画出奈氏图。画出奈氏图。 利用下面的命令,可以得出系统的奈氏图,利用下面的命令,可以得出系统的奈氏图, 如图如图 5-15-1 所示。所示。 num=[0,0,1]; num=[0,0,1]; den=[1,0.8,1];den=[1,0.8,1]; nyquist(num,den)nyquist(num,den) % % 设置坐标显示范围设置坐标显示范围 v=[-2,2,-2,2];v=[-2,2,-2,2]; axis(v)axis(v) gridgrid 图图 5-15-1 二阶环节奈氏图二阶环节奈氏图 title(title( ((3 3)用)用 MATLABMATLAB 作伯德图作伯德图 控制系统工具箱里提供的控制系统工具箱里提供的 bode()bode()函数可以函数可以 直接求取、绘制给定线性系统的伯德图。直接求取、绘制给定线性系统的伯德图。 当命令不包含左端返回变量时,当命令不包含左端返回变量时, 函数运行后函数运行后 会在屏幕上直接画出伯德图。会在屏幕上直接画出伯德图。 如果命令表达式的如果命令表达式的 左端含有返回变量,左端含有返回变量, bode()bode()函数计算出的幅值和函数计算出的幅值和 相角将返回到相应的矩阵中,相角将返回到相应的矩阵中, 这时屏幕上不显示这时屏幕上不显示 频率响应图。命令的调用格式为:频率响应图。命令的调用格式为: ′′NyquistNyquistPlotPlotofof G(s)=1/(s^2+0.8s+1)G(s)=1/(s^2+0.8s+1) ′′) ) [mag,phase,w]=bode(num,den) [mag,phase,w]=bode(num,den) [mag,phase,w]=bode(num,den,w) [mag,phase,w]=bode(num,den,w) 或或 [mag,phase,w]=bode(G) [mag,phase,w]=bode(G) 矩阵矩阵 magmag、、phasephase 包含系统频率响应的幅包含系统频率响应的幅 值和相角,值和相角, 这些幅值和相角是在用户指定的频率这些幅值和相角是在用户指定的频率 点上计算得到的。点上计算得到的。 用户如果不指定频率用户如果不指定频率w,MATLABw,MATLAB 会自动产生会自动产生 w w 向量,向量, 并根据并根据 w w 向量上各点计算幅向量上各点计算幅 值和相角。值和相角。这时的相角是以度来表示的,这时的相角是以度来表示的,幅值为幅值为 增益值,增益值,在画伯德图时要转换成分贝值,在画伯德图时要转换成分贝值,因为