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".错误。。。请问高手该怎么改啊
照一楼的做还是同样的错误。。。。
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语句错误的主要内容,如果未能解决你的问题,请参考以下文章