没有合适的资源?快使用搜索试试~ 我知道了~
第5章 用MATLAB进行控制系统频域分析.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 148 浏览量
2021-10-11
15:26:23
上传
评论
收藏 654KB PDF 举报
温馨提示
试读
15页
。。。
资源推荐
资源详情
资源评论
第 5 章 用 MATLAB 进行控制系统频域分析
一、基于 MATLAB 的线性系统的频域分析基本知识
(1)频率特性函数
G( j
)
。
设线性系统传递函数为:
b
0
s
m
b
1
s
m1
b
m1
s b
m
G(s)
n n
a
0
s a
1
s a
n1
s a
n
则频率特性函数为:
b
0
( j
)
m
b
1
( j
)
m1
b
m1
( j
) b
m
G( jw)
n n
a
0
( j
) a
1
( j
) a
n1
( j
) a
n
由下面的 MATLAB 语句可直接求出 G(jw)。
i=sqrt(-1) % 求取-1 的平方根
GW=polyval(num,i*w)./polyval(den,i*w)
其中(num,den)为系统的传递函数模型。而w 为频率点构成的向量,点右除(./)运
算符表示操作元素点对点的运算。从数值运算的角度来看,上述算法在系统的极点附近精度
不会很理想,甚至出现无穷大值,运算结果是一系列复数返回到变量GW 中。
(2)用 MATLAB 作奈魁斯特图。
控制系统工具箱中提供了一个 MATLAB 函数 nyquist( ),该函数可以用来直接求解
Nyquist 阵列或绘制奈氏图。当命令中不包含左端返回变量时,nyquist()函数仅在屏幕
上产生奈氏图,命令调用格式为:
nyquist(num,den)
nyquist(num,den,w)
或者
nyquist(G)
nyquist(G,w)
该命令将画出下列开环系统传递函数的奈氏曲线:
G(s)
num(s)
den(s)
如果用户给出频率向量 w,则 w 包含了要分析的以弧度/秒表示的诸频率点。在这些频率
点上,将对系统的频率响应进行计算,若没有指定的 w 向量,则该函数自动选择频率向量进
行计算。
w 包含了用户要分析的以弧度/秒表示的诸频率点,MATLAB 会自动计算这些点的频率响
应。
当命令中包含了左端的返回变量时,即:
[re,im,w]=nyquist(G)
或
[re,im,w]=nyquist(G,w)
函数运行后不在屏幕上产生图形,而是将计算结果返回到矩阵re、im 和 w 中。矩阵 re
和 im 分别表示频率响应的实部和虚部,它们都是由向量 w 中指定的频率点计算得到的。
在运行结果中,w 数列的每一个值分别对应 re、im 数列的每一个值。
例 5.1 考虑二阶典型环节:
G(s)
1
2
s 0.8s 1
试利用 MATLAB 画出奈氏图。
利用下面的命令,可以得出系统的奈氏图,如图 5-1 所示。
>> num=[0,0,1];
den=[1,0.8,1];
nyquist(num,den)
% 设置坐标显示范围
v=[-2,2,-2,2];
axis(v)
grid
title(′Nyquist Plot of G(s)=1/(s^2+0.8s+1) ′)
图 5-1 二阶环节奈氏图
(3)用 MATLAB 作伯德图
控制系统工具箱里提供的 bode()函数可以直接求取、绘制给定线性系统的伯德图。
当命令不包含左端返回变量时,函数运行后会在屏幕上直接画出伯德图。如果命令表达
式的左端含有返回变量,bode()函数计算出的幅值和相角将返回到相应的矩阵中,这时屏幕
上不显示频率响应图。命令的调用格式为:
[mag,phase,w]=bode(num,den)
[mag,phase,w]=bode(num,den,w)
或
[mag,phase,w]=bode(G)
[mag,phase,w]=bode(G,w)
矩阵 mag、phase 包含系统频率响应的幅值和相角,这些幅值和相角是在用户指定的
频率点上计算得到的。用户如果不指定频率 w,MATLAB 会自动产生 w 向量,并根据 w 向量上
各点计算幅值和相角。这时的相角是以度来表示的,幅值为增益值,在画伯德图时要转换成
分贝值,因为分贝是作幅频图时常用单位。可以由以下命令把幅值转变成分贝:
magdb=20﹡log10(mag)
绘图时的横坐标是以对数分度的。为了指定频率的范围,可采用以下命令格式:
logspace(d1,d2)
或
logspace(d1,d2,n)
公式 logspace(d1,d2) 是在指定频率范围内按对数距离分成 50 等分的,即在两个
十进制数
1
10
1
和
2
10
d d
2
之间产生一个由 50 个点组成的分量,向量中的点数 50
是一个默认值。例如要在
1
0.1
弧度/秒与
2
100
弧度/秒之间的频区画伯德图,则输
入命令时,
d
1
log
10
(
1
)
,
d
2
log
10
(
2
)
在此频区自动按对数距离等分成 50 个频率点,
返回到工作空间中,即
w=logspace(-1,2)
要对计算点数进行人工设定,则采用公式logspace(d1,d2,n)。例如,要在
1
1
与
2
1000
之间产生 100 个对数等分点,可输入以下命令:
w=logspace(0,3,100)
在画伯德图时,利用以上各式产生的频率向量 w,可以很方便地画出希望频率的伯德图。
由于伯德图是半对数坐标图且幅频图和相频图要同时在一个绘图窗口中绘制,因此,要
用到半对数坐标绘图函数和子图命令。
1)对数坐标绘图函数
利用工作空间中的向量 x,y 绘图,要调用 plot 函数,若要绘制对数或半对数坐标图,
只需要用相应函数名取代 plot 即可,其余参数应用与 plot 完全一致。命令公式有:
semilogx(x,y,s)
上式表示只对 x 轴进行对数变换,y 轴仍为线性坐标。
semilogy(x,y,s)
上式是 y 轴取对数变换的半对数坐标图。
Loglog(x,y,s)
上式是全对数坐标图,即 x 轴和 y 轴均取对数变换。
2)子图命令
MATLAB 允许将一个图形窗口分成多个子窗口,分别显示多个图形,这就要用到 subplot()
函数,其调用格式为:
subplot(m,n,k)
该函数将把一个图形窗口分割成 m×n 个子绘图区域,m 为行数,n 为列数,用户可以通
过参数 k 调用各子绘图区域进行操作,子图区域编号为按行从左至右编号。对一个子图进行
的图形设置不会影响到其它子图,而且允许各子图具有不同的坐标系。例如,subplot(4,3,
6)则表示将窗口分割成 4×3 个部分。在第6 部分上绘制图形。 MATLAB 最多允许 9×9 的分
剩余14页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功