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

📄 dreal1.m

📁 详细介绍了Mathlab的使用方法与技巧
💻 M
字号:
finddataerr=0;
dtnum=get(editfdnum,'string');
dtden=get(editfdden,'string');
dnum=eval(dtnum);dden=eval(dtden);       %读出D(z)
[err1 err2]=size(dnum);
[err3 err4]=size(dden);

fnum=get(editfnum,'string');
fden=get(editfden,'string');
ffnum=eval(fnum);ffden=eval(fden);      %读出Gh(s) 

hfnum=get(edithnum,'string');
hfden=get(edithden,'string');
hhnum=eval(hfnum);hhden=eval(hfden);      %读出H(s) 

dhfT=get(edittime,'string');
dhT=eval(dhfT);

[err5 err6]=size(dnum);
[err7 err8]=size(dden);

if err2>err4|err6>err8,
  finddataerr=1;
else,
   if dfadeback==1                                              %z域
      [dffnum,dffden]=c2dm(ffnum,ffden,dhT,'zoh');              %Gh(z)
      [ghnum,ghden]=series(ffnum,ffden,hhnum,hhden);            %Gh(s)*H(s)
      [dghnum,dghden]=c2dm(ghnum,ghden,dhT,'zoh');              %GhH(z)
      [dgknum,dgkden]=series(dnum,dden,dffnum,dffden);          %D(z)*Gh(z)
      [dghknum,dghkden]=series(dnum,dden,dghnum,dghden);        %D(z)*GhH(z),开环传递函数  
   end
   if fadeback==0&dfadeback==1                               %负反馈
         [dbnum1,dbden1]=feedback(dnum,dden,dghnum,dghden); %D(z)/(1+D(z)GhH(z))
         [dbnum,dbden]=series(dbnum1,dbden1,dffnum,dffden);
  %       clear dfbnum,dfbden,dfknum,dfkden
         dfknum=dghknum;dfkden=dghkden;dfbnum=dbnum;dfbden=dbden;
   end
      
   if fadeback==1&dfadeback==1                               %正反馈         
         [dbnum1,dbden1]=feedback(dnum,dden,dghnum,dghden,1);   %D(z)/(1+D(z)GhH(z))
         [dbnum,dbden]=series(dbnum1,dbden1,dffnum,dffden); 
         dfknum=dghknum;dfkden=dghkden;dfbnum=dbnum;dfbden=dbden;
   end
   if dfadeback==2                                           %S域
         [gdnum,gdden]=d2cm(dnum,dden,dhT,'zoh');               %D(z)~ GD(s)
         [gdghnum,gdghden]=series(gdnum,gdden,ffnum,ffden);     %Gd(s)*Gh(s),前向通道
         [hgghknum,hgghkden]=series(hhnum,hhden,gdghnum,gdghden);   %开环传递函数
         abcdefg=10;
  end
  if dfadeback==2&fadeback==0                     %负反馈
     [bnum,bden]=feedback(gdghnum,gdghden,hhnum,hhden);
     knum=hgghknum;kden=hgghkden;
  end
  if dfadeback==2&fadeback==1                            %正反馈
     [bnum,bden]=feedback(gdghnum,gdghden,hhnum,hhden,1);
     knum=hgghknum;kden=hgghkden;

  end
  if dfadeback==3                                           %W域
     [dffnum,dffden]=c2dm(ffnum,ffden,dhT,'zoh');              %Gh(z)
     [ghnum,ghden]=series(ffnum,ffden,hhnum,hhden);            %Gh(s)*H(s)
     [dghnum,dghden]=c2dm(ghnum,ghden,dhT,'zoh');              %GhH(z)
  %   [dghknum,dghkden]=series(dnum,dden,dghnum,dghden);        %D(z)*GhH(z),开环传递函数  
     [wnum,wden]=d2cm(dghnum,dghden,2,'tustin');               %变换到W平面 
       
  end
end
if finddataerr==0,
  [a,b,c,d]=tf2ss(dfbnum,dfbden);
  ta=a;tb=b;tc=c;td=d;
  [a1,b1,c1,d1,t1]=canon(a,b,c,d,'model');
  [a2,b2,c2,t2,k2]=ctrbf(a,b,c);
  [a3,b3,c3,t3,k3]=obsvf(a,b,c);
  [z,p,k]=ss2zp(a,b,c,d);
  [mina,minb,minc,mind]=minreal(a,b,c,d);
  [minnum,minden]=minreal(bnum,bden);
  test=0;
  close(getmodel3);
  set(mmodel,'enable','on');
  set(manalysis,'enable','on');
  set(msave,'enable','on');
  set(mdesign,'enable','on');
else,
  msgbox('所构造的传递函数分子维数大于分母维数','数据错误警告','help');
end
set(idwin,'enable','off');
set(idwins1,'enable','off');

⌨️ 快捷键说明

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