?? dwmybode.m
字號:
if bodeabcd==1
windbode=figure('color',[.1,.7,.8],'position',[0.1*winw,0.1*winh,0.8*winw,0.8*winh],...
'name','離散系統W域開環Bode圖分析','numbertitle','off','menubar','figure',...
'resize','off');
end
if bodeabcd==0;
figure(windbode)
end
bodeabcd=0;
w=logspace(-2,2);
[mag,phase]=bode(knum,kden,w);
subplot(2,1,1);
semilogx(w,20*log10(mag));hold on
grid on;hold on
if bodeabcd==1
ylabel('幅值/db');
legend('系統Bode圖之幅值圖',0);
end
subplot(2,1,2);
semilogx(w,phase);hold on
grid on;
if bodeabcd==1
ylabel('相位/deg');
legend('系統Bode圖之相位圖',0);
end
rr1=size(knum);
rr2=size(kden);
finderr=0;
%判斷是否為比例環節
if ((rr1(1,2)==1)&(rr2(1,2)==1)),
finderr=1;
%strtext=[' 這是比例環節,零頻值A(0)=' num2str(knum/kden) ' 復現頻率Wm ,諧振頻率Wr ,載止頻率Wb 趨向于無窮!諧振峰值Mr =1 '];
title(strtext);
mybode123w
else,
%判斷是否為積分環節
findjf1=0;
findjf2=0;
for i=1:1:rr1(1,2)-1
if knum(1,i)==0,
else,findjf1=1;break;
end
end
if kden(1,rr2(1,2))==0,
for i=1:1:rr2(1,2)-2
if kden(1,i)==0,
else,findjf2=1;break;
end
end
else,
findjf2=1;
end
if (findjf1==0&findjf2==0),
finderr=1;
% strtext=[' 這是積分環節,零頻值A(0)=無窮大,無諧振峰值Mr, 復現頻率Wm ,諧振頻率Wr ,載止頻率Wb 無意義,斜率為-20db/dec'];
% title(strtext);
mybode1234w
end
end
if finderr==0,
%求頻率響應函數
[z p]=tf2zp(bnum,bden);
ii=find(real(p)>0);n1=length(ii);
if (n1<=0),%系統穩定
syms x w;
l1=poly2sym(knum,'s');l2=poly2sym(kden,'s');
fu=symop(l1,'/',l2);gu='j*w';gu1='-abs(w)';gu2='imag(w)/real(w)';gu3='atan(w)';gu4='abs(w)';
fun1=compose(fu,gu,'s','w');
fun2=compose(l2,gu,'s','w');
% fun2=compose(gu1,fun1);
fun3=compose(gu2,fun1);
fun4=compose(gu3,fun3);
fun5=compose(gu4,fun1);
% cmagfun=subs(fun2,'x','w');
cphasefun=subs(fun4,'x','w');
cphasefun=subs(cphasefun,'x','w');
cphasefun=subs(cphasefun,'x','w');
magfun=fun5;
phasefun=fun4;
magfun1=numeric(subs(fun2,'0','w'));
if numeric(subs(fun2,'0','w'))==0
mybode1234w
else,
mybode1234w
a0=numeric(subs(magfun,'0','w'));
[numlength1 numlength2]=size(knum);
[denlength1 denlength2]=size(kden);
l3=['('];
for i=1:numlength2-1
l3=[l3 num2str(knum(1,i)) '*(j*x)^' num2str(numlength2-i) '+'];
end;
l3=[l3 num2str(knum(1,numlength2)) ')'];
l4=['('];
for i=1:denlength2-1
l4=[l4 num2str(kden(1,i)) '*(j*x)^' num2str(denlength2-i) '+'];
end;
l4=[l4 num2str(kden(1,denlength2)) ')'];
l5=[l3 '/' l4];
cmagfun=['-1*abs(' l5 ')'];
wbmagfun=['abs(' l5 ')-0.707*' num2str(a0)];
wmmagfun=['abs((abs(' l5 ')-' num2str(a0) ')/' num2str(a0) ')-0.02'];
%&&&&&&&&&&&&&
%uicontrol(windbode,'style','push','string','零頻值A(0)',...
% 'position',[0.06,0.01,0.11,0.05],'units','normalized',...
% 'callback','mybodepre_a0');
%uicontrol(windbode,'style','push','string','復現頻率Wm',...
% 'position',[0.23,0.01,0.11,0.05],'units','normalized',...
% 'callback','mybodepre_wm');
%uicontrol(windbode,'style','push','string','諧振頻率Wr及諧振峰值Mr',...
% 'position',[0.4,0.01,0.2,0.05],'units','normalized',...
% 'callback','mybodepre_mr');
%uicontrol(windbode,'style','push','string','載止頻率Wb',...
% 'position',[0.66,0.01,0.11,0.05],'units','normalized',...
% 'callback','mybodepre_wb');
%uicontrol(windbode,'style','push','string','結束',...
% 'position',[0.83,0.01,0.11,0.05],'units','normalized',...
% 'callback','closebode');
end
else,
strtext=['系統不穩定'];title(strtext);%系統不穩定
% mybode1234
msysk=tf(knum,kden);
grid on
ltiview('bode',msysk);grid on
end
end
%else
% abcdefg=0;
% mfksys=tf(knum,kden);
% ltiview('bode',mfksys)
%end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -