Matlab 非中断开关语句
我知道在MATLAB中,没有必要(就像在C++中一样)用“break;”结束switch语句的每个“case”。一旦找到第一个成功案例,语句将停止计算 不过,我有以下情况:Matlab 非中断开关语句,matlab,switch-statement,break,Matlab,Switch Statement,Break,我知道在MATLAB中,没有必要(就像在C++中一样)用“break;”结束switch语句的每个“case”。一旦找到第一个成功案例,语句将停止计算 不过,我有以下情况: switch variable case {0, 1} % Action A case {0, 2} % Action B end 在上述情况下,如果“variable”等于0,则只有操作A将完成。在variable=0的情况下,我希望两个操作都完成。我可以为0创建一个单独的
switch variable
case {0, 1}
% Action A
case {0, 2}
% Action B
end
在上述情况下,如果“variable”等于0,则只有操作A将完成。在variable=0的情况下,我希望两个操作都完成。我可以为0创建一个单独的案例,激活两个动作a和B,但这似乎不是有效的编程,因为我必须复制两个动作
我相信一定有一个简单的方法可以做到这一点,但我仍然是一个相对的新手MATLAB,所以我想知道我可以做什么来保持我的代码整洁
问候你所说的
我可以为0创建一个单独的案例,激活两个动作a和B,但这似乎不是有效的编程,因为我必须复制两个动作
不管效率如何,这可能是最具可读性的事情。我会一直追求可读性,直到你能证明某些代码是一个瓶颈。所以我会写:
switch variable
case 0
ActionA()
ActionB()
case 1
ActionA()
case 2
ActionB()
end
function ActionA()
...
end
function ActionB()
...
end
如果您真的想要一个不断开的开关,您可以按照MATLAB Central的建议:
要在MATLAB中实现直通行为,可以在一种情况下指定所有相关表达式,然后有条件地计算该代码段中的值
代码长度不一定与可读性或效率相同。我认为正确的答案是放弃开关,只写下你的意思:
if((variable == 0) || (variable == 1))
ActionA();
end
if((variable == 0) || (variable == 2))
ActionB();
end
不幸的是,MATLAB语句没有提供直通逻辑的灵活性,因此在这种情况下您将无法使用它
您可以使用连续的if
语句(附带一些注释)替换开关
,这就是您得到的结果:
%# Switch variable
if (variable == 0 || variable == 1) %# case {0, 1}
%# Action A
end
if (variable == 0 || variable == 2) %# case {0, 2}
%# Action B
end
在我看来,它看起来仍然很优雅