资源描述:
《实验六matlab频域分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验六MATLAB频域分析5.1频率特性的概念系统的频率响应是在正弦信号作用下系统的稳态输出响应。对于线性定常系统,在正弦信号作用下,稳态输出是与输入同频率的正弦信号,仅是幅值和相位不同。设系统传递函数为,其频率特性为例5-1对系统,在输入信号和下可由Matlab求系统的输出信号,其程序如下:》num=2;den=[123];》G=tf(num,den);》t=0:0.1:6*pi;》u=sin(t);/u=sin(3*t);》y=lsim(G,u,t);》plot(t,u,t,y)运行程序显示系统响应如图5-1所示。a)sint的响应b)sin(3t)的响应图5
2、-1正弦信号输入系统的稳态响应-10-5.2用绘制极坐标图频率特性中的奈奎斯特图是奈奎斯特(Nyquist)稳定性判据的基础。反馈控制系统稳定的充分必要条件为:奈奎斯特曲线逆时针包围点的次数等于系统开环右极点个数。调用Matlab中nyquist()函数可绘出奈奎斯特图,其调用格式为:或式中,;为用户提供的频率范围;re为极坐标的实部;im为极坐标的虚部。若不指定频率范围,则为。在输入指令中,如果缺省了左边的参数说明,奈奎斯特函数将直接生成奈奎斯特图;当命令包含左端变量时,即时,则奈奎斯特函数将只计算频率响应的实部和虚部,并将计算结果放在数据向量和中。在此情况下,
3、只有调用plot函数和向量、,才能生成奈奎斯特图。例5-2设系统的传递函数为,绘制其奈奎斯特图。解程序如下:》num=[1];den=[1,2,2];》nyquist(num,den)运行程序,显示奈奎斯特曲线如图5-2所示。图5-2奈奎斯特曲线-10-值得注意的是,由于nyquist()函数自动生成的坐标尺度固定不变,nyquist()函数可能会生成异常的奈奎斯特图,也可能会丢失一些重要的信息。在这种情况下,为了重点关注奈奎斯特图在点(-1,j0)附近的形状,着重分析系统的稳定性,需要首先调用轴函数axis(),自行定义坐标轴的显示尺度,以提高图形的分辨率;或用
4、放大镜工具放大,以便进行稳定性分析。例5-3设某系统的传递函数为,则绘制其奈奎斯特图的程序如下:》num=[1000];den=[1,8,17,10];》nyquist(num,den);grid或num=[1000];den=[1,8,17,10];sys=tf(num,den);nyquist(sys);grid运行程序,显示奈奎斯特曲线如图5-3a)所示。可以看出在点(-1,j0)附近,奈奎斯特图很不清楚,可利用放大镜对得出的奈奎斯特图进行局部放大,或利用如下Matlab命令》v=[-10,0,-1.5,1.5];》axis(v)a)b)图5-3奈奎斯特局部
5、图-10-例5-4设某系统的开环传递函数为则绘制其奈奎斯特图的程序如下:》num=10*[1,4,4];》den=conv([1,1],[1,-2,9]);》nyquist(num,den);》grid或num=10*[1,4,4];》den=conv([1,1],[1,-2,9]);sys=tf(num,den);nyquist(sys);grid运行程序,显示得图5-4a)。若规定实轴、虚轴范围(10,10),(-10,10),则绘制其奈奎斯特图的程序如下:》num=10*[144];den=conv([11],[1-29]);》nyquist(num,den
6、);》axis([-10,10,-10,10])运行程序,显示得图5-4b)。a)b)图5-4奈奎斯特曲线-10-5.3用bode(sys)画对数坐标图伯德图由对数幅频和对数相频两张图构成,轴采用对数分度,幅值为对数增益即分贝(),相位为线性分度。Matlab中绘制伯德图的函数为bode(),其调用格式为[mag,phase,w]=bode(num,den,w)或sys=tf(num,den);bode(sys)式中,G(s)=num/den,频率自动选择范围从,若自行选择频率范围,可应用logspace()函数,其格式为式中,a表示最小频率10a,b表示最大频率
7、10b,n表示10a~10b之间频率点数。例5-5设某系统的传递函数为,则绘制其伯德图的Matlab程序如下:>>num=5*[0.11];>>den=conv([10],conv([0.51],[1/25000.6/501]));>>bode(num,den)-10-函数的应用。程序如下:>>w=logspace(-1,4,300);%确定频率范围及点数>>[mag,phase,w]=bode(num,den,w);>>semilogx(w,20*log(mag));grid%绘图坐标及大小>>xlabel('Frequency[rad/s]'),ylabel(
8、'20*l