*频率特性仿真主要内容–MATLAB频率分析的相关函数–MATLAB频率分析实例–MATLAB频率校正方法*一、MATLAB频率分析的相关函数绘制系统Bode图。系统自动选取频率范围绘制系统Bode图。由用户指定选取频率范围同时绘制多系统Bode图。图形属性参数可选返回系统Bode图相应的幅值、相位和频率向量。可使用magdb=20*log10(mag)将幅值转换为分贝值返回系统Bode图与指定w相应的幅值、相位。可使用magdb=20*log10(mag)将幅值转换为分贝值bode(G)bode(G,w)bode(G1,'r--',G2,'gx',…)[mag,phase,w]=bode(G)[mag,phase]=bode(G,w)表1频域分析的相关函数用法及功能说明*绘制系统Nyquist图。系统自动选取频率范围绘制系统Nyquist图。由用户指定选取频率范围同时绘制多系统Nyquist图。图形属性参数可选返回系统Nyquist图相应的实部、虚部和频率向量返回系统Nyquist图与指定w相应的实部、虚部。Nyquist(sys)Nyquist(sys,w)Nyquist(G1,'r--',G2,'gx',…)[re,im,w]=Nyquist(sys)[re,im]=Nyquist(sys,w)一、MATLAB频率分析的相关函数表1频域分析的相关函数用法及功能说明*绘制系统Nichols图。系统自动选取频率范围绘制系统Nichols图。由用户指定选取频率范围同时绘制多系统Nichols图。图形属性参数可选返回系统Nichols图相应的幅值、相位和频率向量。可使用magdb=20*log10(mag)将幅值转换为分贝值返回系统Nichols图与指定w相应的幅值、相位。可使用magdb=20*log10(mag)将幅值转换为分贝值nichols(G)nichols(G,w)nichols(G1,'r--',G2,'gx',…)[mag,phase,w]=nichols(G)[mag,phase]=nichols(G,w)一、MATLAB频率分析的相关函数表1频域分析的相关函数用法及功能说明*在Nichols曲线图上绘制等M圆和等N圆。要注在对数坐标中,圆的形状会发生变化绘制网格前清除原图,然后设置holdon。后续Nichols函数可与网格绘制在一起ngridngrid('new')一、MATLAB频率分析的相关函数表1频域分析的相关函数用法及功能说明*返回相对稳定参数组成的结构体。包含幅值裕度、相角裕度及其相应频率,时滞幅值裕度和频率,是否稳定的标识符S=allmargin(G)绘制系统Bode图。带有裕量及相应频率显示给出系统相对稳定参数。分别为幅值裕度、相角裕度、幅值穿越频率、相角穿越频率给出系统相对稳定参数。由Bode函数得到的幅值、相角和频率向量计算。返回参数分别为幅值裕度、相角裕度、幅值穿越频率、相角穿越频率margin(G)[Gm,Pm,Wg,Wp]=margin(G)[Gm,Pm,Wg,Wp]=margin(mag,phase,w)表2基于频域法的控制系统稳定判定相关MATLAB函数一、MATLAB频率分析的相关函数*二、 MATLAB频域分析实例例1:系统的开环传递函数为绘制系统的Bode图。s=tf('s');G=1000*(s+1)/(s*(s+2)*(s^2+17*s+4000));bode(G)%绘制波特图grid%绘制网格*运行结果:图1例1系统Bode图*例2:系统的开环传递函数为绘制系统的Bode图。二、 MATLAB频域分析实例num=5;den=conv([12],[121]);w=logspace(-2,3,100);%指定频率范围[mag,phase,w]=bode(num,den,w);%返回波特图数据magdB=20*log10(mag);%进行幅值的单位转换subplot(2,1,1);semilogx(w,magdB); %绘制对数幅频特性图grid;例2:系统的开环传递函数为绘制系统的Bode图。二、 MATLAB频域分析实例*title('系统Bode图');xlabel('Frequency(rad/sec)');ylabel('GaindB');subplot(2,1,2);semilogx(w,phase);%绘制对数相频特性图grid;xlabel('Frequency(rad/sec)');ylabel('Phasedeg');例2续:二、 MATLAB频域分析实例*运行结果:图2例2系统的Bode图*例3:系统的开环传递函数为绘制K取不同值时系统的Bode图。k=[105001000];%K分别取10,50,1000forii=1:3G(ii)=tf(k(ii),[110500]);endbode(G(1),'r:',G(2),'b--',G(3))title('系统K/(s^2+10s+500)Bode图,K=10,500,1000','fontsize',16);grid二、 MATLAB频域分析实例*运行结果:图3例3K分别取10,50,1000的系统Bode图*例4:单位负反馈系统的开环传递函数为绘制系统Nyquist曲线。二、 MATLAB频域分析实例num=[202010];den=conv([110],[110]);Nyquist(num,den)*运行结果:图4例4系统的Nyquist曲线*例4续:n对于图4,如果想要看清某部分细节,也可通过设置坐标范围进行局部放大,从而得到更清晰的局部图像,如图5。num=[202010];den=conv([110],[110]);Nyquist(num,den)axis([-22-55])%设置坐标范围*运行结果:图5例4局部放大的系统Nyquist曲线*例4续:n同样,还可通过设置范围得到局部的Nyquist曲线。如只绘制系统位于的Nyquist曲线,如图6。num=[202010];den=conv([110],[110]);w=0.1:0.1:100;%设置频率范围[re,im]=Nyquist(num,den,w);%返回指定频率范围的Nyquist曲线数据plot(re,im)axis([-22-55]);grid;title('系统(20s^2+20s+10)/[(s^2+s)(s+10)]Nyquist图(\omega0)','fontsize',12);*运行结果:)图6例4系统Nyquist曲线()*例5:系统的开环传递函数为绘制系统的Nichols曲线。二、 MATLAB频域分析实例num=100;den=[180];w=logspace(-1,2,100);nichols(num,den,w);%指定频率范围的Nichols曲线ngrid;%绘制等M圆和等N圆*运行结果:图7例5系统的Nichols曲线*可利用Nichols曲线返回的幅值和相位数据绘制波特图num=100;den=[180];w=logspace(-1,2,100);[mag,phase]=nichols(num,den,w);%返回Nichols曲线参数magdB=20*log10(mag);%转换为对数幅值subplot(2,1,1)semilogx(w,magdB);%使用Nichols曲线参数绘制幅频特性title('系统幅频特性曲线');subplot(2,1,2)semilogx(w,phase);%使用Nichols曲线参数绘制相频特性title('系统相频特性曲线');figure(2);bode(num,den,w)%直接求取系统Bode图title('系统Bode图');*运行结果:图8例5由Nichols曲线参数绘制对数坐标图*运行结果图9例5直接求取的系统波特图*例6:分别判定系统和的稳定性。如果系统稳定,进一步给出系统相对稳定参数。二、 MATLAB频域分析实例num1=5;den1=conv([12],[150]);G1=tf(num1,den1);margin(G1)figure(2)num2=200;den2=conv([12],[150]);G2=tf(num2,den2);margin(G2)*运行结果:图10例6系统的Bode图*运行结果:图11例6系统的Bode图*例7:单位负反馈系统的开环传递函数为绘制闭环系统的Bode图。此外,继续给出闭环频率特性性能指标谐振峰值、谐振频率和系统带宽。二、 MATLAB频域分析实例*s=tf('s');Gk=1/s/(0.5*s+1)/(s+1);G=feedback(Gk,1); %闭环系统传递函数w=logspace(-1,1);%给出从共50个(默认)频率值[mag,phase,w]=bode(G,w);%返回闭环系统bode图参数[Mp,k]=max(mag); %谐振峰值resonantPeak=20*log10(Mp)%谐振峰值单位转换resonantFreq=w(k)%谐振频率n=1;while20*log10(mag(n))=-3 n=n+1;endbandwidth=w(n) %系统带宽bode(G,w),grid; %系统bode图二、 MATLAB频域分析实例例7:*运行结果:resonantPeak=5.2388resonantFreq=0.7906bandwidth=1.2649*三、MATLAB频率校正方法超前网络:为了获得最大的相位超前量,应使得超前网络的最大相位超前发生在校正后系统的幅值穿越频率处,即。根据这一思想,具体设计步骤如下:(1)根据要求的稳态误差指标,确定开环增益K;(2)计算校正前的系统相位裕度γ。利用已确定的开环增益,绘制校正前的系统Bode图,并求取γ值。1.基于Bode图的相位超前校正步骤*(3)确定需要对系统增加的相位超前量。其中γ*表示期望的校正后系统的相位裕度。因为增加超前校正装置后,会使幅值穿越频率向右方移动,因而减小相位裕度,所以在计算相位超前量时,应额外加。(4)确定校正器衰减因子。由得。(5)确定最大超前频率。在原系统幅值为的频率,即作为校正后系统的幅值穿越频率。(6)确定校正网络的参数T。三、MATLAB频率校正方法1.基于Bode图的相位超前校正步骤*(7)由超前网络参数得到校正器,并提高校正器的增益以抵消1/a的衰减。得到经补偿后的校正器。(8)绘制校正后的系统Bode图。验证相位裕度是否满足要求,有必要时重复上述步骤。三、MATLAB频率校正方法1.基于Bode图的相位超前校正步骤*频域法超前校正实例例8:已知单位负反馈系统的开环传递函数为。使用MATLAB设计超前校正网络,使系统的稳态速度误差系数,相位裕度不小于。n由要求可计算得。则满足稳态速度误差要求的系统开环传递函数为。三、MATLAB频率校正方法*%最大超前相位调节参数%得到原系统传递函数%原系统Bode图%原系统的相位裕量和幅值裕量%期望相位裕度%需补偿的相位裕度%相位裕度单位转换%求取校正器参数α%校正器在最大超前相位处的增益%返回Bode图参数%原系统幅值单位转换%得到最大超前相位处的频率%求取校正器参数t%得到补偿后的校正器%求取校正后的系统稳定裕度参数%得到校正后的系统Bode图delta=3;s=tf('s');G=20/(s*(s+1));margin(G)[gm,pm]=margin(G)phim1=50;phim=phim1-pm+delta;phim=phim*pi/180;alfa=(1+sin(phim))/(1-sin(phim));a=10*log10(alfa);[mag,phase,w]=bode(G);adB=20*log10(mag);wm=spline(adB,w,-a);t=1/(wm*sqrt(alfa));Gc=(1+alfa*t*s)/(1+t*s);[gmc,pmc]=margin(G*Gc)figure;margin(G*Gc)*例8运行结