matlab中出现case语句错误

来源:百度知道 编辑:UC知道 时间:2024/06/28 11:25:01
我的程序如下:
function [Gmm,Pmm,Wcgm,Wcpm]=freqm(G,m,varargin);
syms s nums dens denm numm den num w;
if nargin= =1,disp('Bode Diagram,with m=0.221');plottype='bode';m=0.221;end;
if nargin= =2,plottype='bode';disp('Bode Diagram');end;
if nargin>2,plottype= varargin {1};end;
G=tf(G);num=poly2sym(G.num{1},s);den=poly2sym(G.den{1},s);
[MAG,PHASE,ww]=bode(G);DT=get(G,'inputdelay');
wM=max(ww*100);wm=min(ww/100);w=logspace(log(wm),log10(wM),100);
numm=subs(num,s,(j-m)*w);denm=subs(den,s,(j-m)*w);
Gm=numm./denm.*exp(m*w*DT);sysm=frd(Gm,w);set(sysm,'inputdelay',DT);
swith plottype
case 'bode'
if nargout= =0,bode(sysm,w);end;
case 'margin'
if narout>3;[Gmm,Pmm,Wcgm,Wcpm]=margin(sysm);end;
case 'nyquist'
if narout<=3;nyquist(sysm);end;
case 'nichols'
if narout<=3;nichols(sysm);end;end;

switch不是swith

每个case后面,除了最后一个end,其他的去掉。
swith plottype
case 'bode'
if nargout= =0,bode(sysm,w);
case 'margin'
if narout>3;[Gmm,Pmm,Wcgm,Wcpm]=margin(sysm);
case 'nyquist'
if narout<=3;nyquist(sysm);
case 'nichols'
if narout<=3;nichols(sysm);
end;
应该就可以了