王大伟 发表于 2013-5-24 16:31:18

关于Matlab程序中的错误

functionbdjz()globalh1_edit h2_edit num den   h4_edith5_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))                         =size(num);   %因为要想使用K和稳态误差之间的倒数关系,必须对应尾一型,因此这里统一以时间常数形式进行输入          for k=1:n1          cx111(k,1)=-(1/num(1,k));end         =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         =zp2tf(cx111,cx222,s);             Else                              %对应如果分子不含时间常数项         =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         =zp2tf(cx111,cx222,s);      end          sys=tf(z ,)          =margin(sys)             if Wcp>=wc      %判断是超前还是滞后的关键,此时用滞后校正             phy1=-180+rw+6;                %根据性能指标原系统应该具有的相角度数,注意要考虑裕量               =bode(sys);               wc1=spline(p,w,phy1);             %这个相角度数所对应的频率               M1=spline(p,m,phy1)            %这一相角所对应的幅值               b=1/M1;               T=10/(b*wc1);               Gc=tf(,)            %这些是由公式推导而来的               G1=Gc*sys;                   %校正后的总的开环传函=margin(G1)    %这样在Cmmond窗口会显示出校正之后的性能指标            bode(sys,'g',G1,'r')      %同时绘制出校正前和校正后的伯德图像            else                     %对应要采用超前校正            wc1=wc+4; %考虑到相角裕量的要求,而4是根据经验自己取定的            =bode(sys);            M1=spline(w,m,wc1);      %期望的截止频率处对应的幅值            a=M1^(-2);               %根据公式求出超前校正对应的参数a            T=1/(wc1*sqrt(a));         %求出超前校正对应的参数T            Gc=tf(,)      %求出校正装置的传递函数            G1=Gc*sys;               %超前校正之后系统总的传递函数            =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'));错误在哪啊 求大神给解释解释 没办法了改不过来啊
页: [1]
查看完整版本: 关于Matlab程序中的错误