简化if具有多个条件的循环

时间:2011-07-16 16:01:17

标签: matlab

我有一个循环:

if A == 1
    A = 2;
end
if B == 1
    B = 2;
end
if C == 1
    C = 2;

...等 现在这当然需要很长时间才能写出来,但如果我这样写:

if A == 1 || B == 1 || C == 1
    A = 2; B = 2; C = 2;
end

如果它们中的任何一个等于'1',它将改变所有参数 我想要的是一个简单的循环,我可以说,如果A或B或C或...等于'X'而不是只有等于'X'的新值变为新值,而不必像我在第一个例子中那样写它。 谢谢

4 个答案:

答案 0 :(得分:7)

也许如果你将它们组合在一个向量中,你可以这样做:

params = [A B C];
params(params==1) = 2;

答案 1 :(得分:1)

如果您可以更改代码以使一个变量指示不同的情况,switch语句提供了一种优雅的方法来解决您的任务。

switch yourNumber
    case 1
        A = 2;
    case 2
        B = 2;
    case 3
        C = 2;
    otherwise
        disp('unknown value');
end

可以为yourNumber分配值1,2或3.

答案 2 :(得分:0)

我认为你不应该使用不可读的代码,但从技术上讲,你可以把它归结为三行而没有ifs:

A = abs(sign(A - 1)) * A + (1 - abs(sign(A - 1)) * 2
(same for B and C)

是的,它太疯狂了,正如我所说,我不推荐它......

答案 3 :(得分:0)

如果你写

if A == 1 || B == 1 || C == 1
    A = 2; B = 2; C = 2;
end

在任何这些条件下,A,B和C都是2!和它不一样! 最好的方法是将它们分组到一个载体中。