研发埠

标题: 关于Matlab程序中的错误 [打印本页]

作者: 王大伟    时间: 2013-5-24 16:31
标题: 关于Matlab程序中的错误
functionbdjz()globalh1_edit h2_edit num den   h4_edit  h5_edit h6_editnum=str2num(get(findobj(gcf,'Tag','h1_edit'),'string'));den=str2num(get(findobj(gcf,'Tag','h2_edit'),'string'));ess=str2num(get(findobj(gcf,'Tag','h4_edit'),'string'));      %给定的的稳态误差要求rw=str2num(get(findobj(gcf,'Tag','h5_edit'),'string'));      %给定的相角裕度要求wc=str2num(get(findobj(gcf,'Tag','h6_edit'),'string'));      %给定的截止频率要求      if(~isempty(den))            s=(1/ess)                               %放大倍数取稳态误差的倒数        if(~isempty(num))                         [m1,n1]=size(num);     %因为要想使用K和稳态误差之间的倒数关系,必须对应尾一型,因此这里统一以时间常数形式进行输入          for k=1:n1          cx111(k,1)=-(1/num(1,k));end           [m2,n2]=size(den);          for k=1:n2           cx222(k,1)=-(1/den(1,k));endfile:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif          for i=1:1:n1           s=s*num(1,i); end          for i=1:1:n2           s=s/den(1,i);end         [z,p]=zp2tf(cx111,cx222,s);             Else                                %对应如果分子不含时间常数项           [m2,n2]=size(den);         for k=1:n2           cx222(k,1)=-(1/den(1,k));endfile:///C:/Users/ASUS/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif           cx111=[]';         for i=1:1:n2             s=s/den(1,i);end           [z,p]=zp2tf(cx111,cx222,s);        end          sys=tf(z ,[p 0])          [Gm,Pm,Wcg,Wcp]=margin(sys)             if Wcp>=wc        %判断是超前还是滞后的关键,此时用滞后校正             phy1=-180+rw+6;                %根据性能指标原系统应该具有的相角度数,注意要考虑裕量               [m,p,w]=bode(sys);               wc1=spline(p,w,phy1);             %这个相角度数所对应的频率               M1=spline(p,m,phy1)            %这一相角所对应的幅值               b=1/M1;               T=10/(b*wc1);               Gc=tf([b*T 1],[T 1])            %这些是由公式推导而来的               G1=Gc*sys;                   %校正后的总的开环传函[Gm,Pm,Wcg,Wcp]=margin(G1)    %这样在Cmmond窗口会显示出校正之后的性能指标              bode(sys,'g',G1,'r')      %同时绘制出校正前和校正后的伯德图像              else                     %对应要采用超前校正            wc1=wc+4; %考虑到相角裕量的要求,而4是根据经验自己取定的            [m,p,w]=bode(sys);            M1=spline(w,m,wc1);      %期望的截止频率处对应的幅值            a=M1^(-2);               %根据公式求出超前校正对应的参数a            T=1/(wc1*sqrt(a));         %求出超前校正对应的参数T            Gc=tf([a*T 1],[T 1])        %求出校正装置的传递函数            G1=Gc*sys;               %超前校正之后系统总的传递函数            [Gm,Pm,Wcg,Wcp]=margin(G1)  %得到校正之后系统的性能指标            bode(sys,'g',G1,'r')           %同时绘制出校正前后系统的伯德图,绿色是未校正的,红色是校正之后的          end        else         plot(0,0)      endendError using str2num (line 33)Requires string or character array input.Error in bdjz (line 3)num1=str2num(get(findobj(gcf,'Tag','h1_edit'),'string'));错误在哪啊 求大神给解释解释 没办法了  改不过来啊




欢迎光临 研发埠 (http://bbs.yanfabu.com/) Powered by Discuz! X3.2