matlab中出现case语句错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中出现case语句错误相关的知识,希望对你有一定的参考价值。

我的程序如下:
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.num1,s);den=poly2sym(G.den1,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;

当运行这个函数时出现Illegal use of reserved keyword "case".错误。。。请问高手该怎么改啊
照一楼的做还是同样的错误。。。。

参考技术A 每个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;
应该就可以了
参考技术B switch不是swith本回答被提问者采纳

Oracle SQL ORA-00907: CASE 语句中缺少右括号错误

【中文标题】Oracle SQL ORA-00907: CASE 语句中缺少右括号错误【英文标题】:Oracle SQL ORA-00907: missing right parenthesis error in CASE statement 【发布时间】:2014-06-03 18:33:25 【问题描述】:

我正在使用 select 子句中的以下 CASE 语句执行查询:

select (case instr(listagg(D.first_name, ',') 
    within group (order by D.first_name), ',')
when 0 
then substr(listagg(D.first_name, ',') 
    within group (order by D.first_name), 1)
else substr(listagg(D.first_name, ',') 
    within group (order by D.first_name), 1, instr(listagg(D.first_name, ',') 
    within group (order by D.first_name), ',') - 1) end) Advisor1FName
from ....

SQL Developer 引发 ORA-00907 缺少右括号错误。

出了什么问题?任何帮助将不胜感激。

【问题讨论】:

看起来不错。您可以尝试将其全部替换为 * 并再次尝试确保我们看到的减法有问题 可能在case 末尾缺少end @Jens 抱歉,“end”关键字可能在复制时消失了。查询中确实存在“end”,并且存在同样的问题。 我正在回滚您的编辑。添加“已解决”并且您的问题的解决方案不是 *** 的工作方式(它是一个“问答”网站,这意味着在标记为“您的答案”的空间中发布一个问题,然后回答它)。如果您想将解决方案发布给未来的读者,您可以post a self-answer;你甚至可以自己接受它是正确的。 :-) 【参考方案1】:

通过将整个 listagg 函数括在括号中来解决。奇怪的是它们是必需的,但这就是解决问题的方法。

所以,

substr(listagg(D.first_name, ',') 
    within group (order by D.first_name), 1)

变成

substr((listagg(D.first_name, ',') 
    within group (order by D.first_name)), 1)

【讨论】:

以上是关于matlab中出现case语句错误的主要内容,如果未能解决你的问题,请参考以下文章

case语句用法 case语句怎么用

ORACLE SQL CASE 语句 - 出现错误

错误 C2131 使用 switch 和 case 语句

pyspark中的case语句问题

Java中为啥我写switch语句,在case后加break就错误,不加就正确,很困惑,

SQL Server 2008 使用 case 语句查看错误