读懂%自定义函数 leadcmpst(用来求出超前校正装置的传递函数) function[modelcompensator,Wcnew,Wcold,alpha]=leadcmpst(sysopen,Pmd) [Gmo,Pmo,wcgo,wcpo]=margin(sysopen); phacmp=Pmd-Pmo+5; phc=phacmp*pi/180; alpha=(1-sin(phc))/(1+sin(phc)); Gaincmp=10*log10(alpha); [mag,phase,W]=bode(sysopen); [l,n,c]=size(mag); mag1=zeros(c,1); for i=1:c mag1(i)=20*log10(mag(1,1,i)); end Wcold=wcpo Wcnew=interp1(mag1,W,Gaincmp,'spline'); Zc=Wcnew*sqrt(alpha); Pc=Zc/alpha; modelcompensator=zpk(-Zc,-Pc,1/alpha);
时间: 2024-04-02 21:35:21 浏览: 151
这是一个 MATLAB 自定义函数,用于计算超前校正装置的传递函数。函数名为 `leadcmpst`,有四个输入参数 `sysopen`、`Pmd`、`Wcnew` 和 `Wcold`,以及三个输出参数 `modelcompensator`、`Wcnew` 和 `alpha`。
函数的主要流程如下:
1. 通过调用 MATLAB 自带函数 `margin` 计算系统的开环增益辐盖度(`Gmo`)、相位辐盖度(`Pmo`)、增益交叉频率(`wcgo`)和相位交叉频率(`wcpo`)。
2. 根据要求的相位裕度(`Pmd`)和已知的相位辐盖度(`Pmo`)计算超前校正器的相位补偿量(`phacmp`)。
3. 将相位补偿量转换为弧度值(`phc`)。
4. 根据超前系数的定义,计算超前系数(`alpha`)。
5. 根据超前系数的定义,计算超前校正器的增益补偿量(`Gaincmp`)。
6. 使用 `bode` 函数计算系统的幅度响应(`mag`)和相位响应(`phase`)。
7. 将幅度响应转换为 dB 值,并存储在 `mag1` 中。
8. 使用 MATLAB 自带函数 `interp1` 对 `mag1` 进行插值,得到新的交叉频率(`Wcnew`)。
9. 根据超前系数的定义,计算零点(`Zc`)和极点(`Pc`)。
10. 使用 `zpk` 函数生成超前校正器的传递函数模型(`modelcompensator`)。
其中,`[l,n,c]=size(mag)` 用于获取 `mag` 的维度信息,`interp1(mag1,W,Gaincmp,'spline')` 用于对 `mag1` 和 `W` 进行插值,`zpk(-Zc,-Pc,1/alpha)` 用于生成零极点模型。
阅读全文