⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bd_asymp.m

📁 matlab 程序 专用于解答多项式 和 自动控制的各类习题 从我们老师那里拿过来的 鼎力推荐
💻 M
字号:
function [wpos,ypos]=bd_asymp(G,w)
G1=zpk(G); wpos=[];pos1=[];
if nargin==1, w=freqint2(G); end
zer=G1.z{1}; pol=G1.p{1}; gain=G1.k;
for i=1:length(zer);
    if isreal(zer(i))
        wpos=[wpos,abs(zer(i))];
        pos1=[pos1,20];
    else
        if imag(zer(i))>0
            wpos=[wpos,abs(zer(i))];
            pos1=[pos1,40];
        end, end, end
for i=1:length(pol);
    if isreal(pol(i))
        wpos=[wpos,abs(pol(i))];
        pos1=[pos1,-20];
    else
        if imag(pol(i))>0
            wpos=[wpos,abs(pol(i))];
            pos1=[pos1,-40];
        end, end, end
wpos=[wpos w(1) w(length(w))];
pos1=[pos1, 0,0];
[wpos,ii]=sort(wpos); pos1=pos1(ii);
ii=find(abs(wpos)<eps); kslp=0;
w_start=1000*eps;
if length(ii)>0,
    kslp=sum(pos1(ii));
    ii=(ii(length(ii))+1):length(wpos);
    wpos=wpos(ii); pos1=pos1(ii);
end
while  1
    [ypos1,pp]=bode(G,w_start);
    if isinf(ypos1), w_start=w_start*10;
    else, break; end
end
wpos=[w_start wpos];
ypos(1)=20*log10(ypos1);
pos1=[kslp pos1];
for i=2:length(wpos)
    kslp=sum(pos1(1:i-1));
    ypos(i)=ypos(i-1)+kslp*log10(wpos(i)/wpos(i-1));
end
ii=find(wpos>=w(1) & wpos<=w(length(w)));
wpos=wpos(ii); ypos=ypos(ii);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -