2012-10-07 42 views
0

会不会有把几个办法if语句中,如下所示相同的顺序进行:将几个IF语句组合成一个(matlab)?

X = [1 2 3 4; 5 4 6 7; 2 8 9 2]; 
X 

n = length(X(1,:))-1; 

for i=1:n,  
    if length(X(1,:)) == n, 
    ......... 
    end 

    if length(X(1,:)) == n-1, 
    ......... 
    end 

    if length(X(1,:)) == n-2, 
    ......... 
    end 
end 

有什么建议?

+0

请提供有关这些'if'语句正文内容的更多信息。 – user57368

回答

1

从您提供的代码和您给予Theodros的评论来看,我认为这是一个code smell的情况。换句话说,我有一种预感,那就是你的方法存在更深层的问题,如果你透露你的问题,我们可能会改进。

现在,话说回来:如果您要执行的操作对每种情况都不相同,那么显然您不能将它们组合成一个语句。如果有相同的程序multple副本中的每个块,你可以使用逻辑OR:

if length(X(1,:)) == n || length(X(1,:)) == n-1 
    ... 
end 

if length(X(1,:)) == n-2 || length(X(1,:)) == n-4 
    ... 
end 

的代码将看起来更好(和速度稍快),如果你使用switch语句,@TheodrosZelleke建议。结合案例如下:

switch length(X(1,:)) 

    case {1 2} %# length == 1 OR length == 2 
     ... 
    case {3 4} %# length == 3 OR length == 4 
     ... 
end