【发布时间】:2016-03-10 14:29:23
【问题描述】:
虽然我想出了一个使用多个if / else if 语句的解决方法,但我很想知道我的case 语句看起来有什么问题,如下图所示:
function [ar_vo,bucket] = revEng(v)
...
s=solve(solve>0) * sqrt(T);
ar_vo=s;
bucket=ri(ar_vo);
%%%%%%%%%%%%%%%%%%%%%
function bucket = ri(ar_vo)
% switch(ar_vo)
% case ((ar_vo >= 0)&&(ar_vo < 0.005)) (1)
% bucket=1;
% case ((ar_vo >= 0.005)&&(ar_vo < 0.02)) (2)
% bucket=2;
% case ((ar_vo >= 0.02)&&(ar_vo < 0.05)) (3)
% bucket=3;
% case ((ar_vo >= 0.05)&&(ar_vo < 0.1)) (4)
% bucket=4;
% case ((ar_vo >= 0.1)&&(ar_vo < 0.15)) (5)
% bucket=5;
% case ((ar_vol >= 0.15)&&(ar_vol < 0.25)) (6)
% bucket=6;
% case (ar_vo >= 0.25) (7)
% bucket=7;
% otherwise
% error('MATLAB:RI Bucket:NotAvailable.'); (8)
% end
%
在调试代码时给定ar_vo = 0.073...,由于某些原因它会跳过case (4)并到达case (8)...
低效但有效的解决方案,有多个if / else if:
if ((ar_vo >= 0)&&(ar_vo < 0.005))
bucket=1;
else if ((ar_vo >= 0.005)&&(ar_vo < 0.02))
bucket=2;
else if ((ar_vo >= 0.02)&&(ar_vo < 0.05))
bucket=3;
else if ((ar_vo >= 0.05)&&(ar_vo < 0.1))
bucket=4;
else if ((ar_vo >= 0.1)&&(ar_vo < 0.15))
bucket=5;
else if ((ar_vo >= 0.15)&&(ar_vo < 0.25))
bucket=6;
else if (ar_vo >= 0.25)
bucket=7;
else
error('MATLAB:RI Bucket:NotAvailable.');
end
end
end
end
end
end
end
【问题讨论】:
-
我多语言切换的情况需要中断;声明表示,我们不想通过其余的 case 语句,而是要完成 switch。不知道是不是这样
-
好的...,但肯定不在
matlab中,因为我有时将它用于处理间隔(使用float数据类型)之外的其他目的而没有问题。
标签: matlab switch-statement case