if

优质
小牛编辑
136浏览
2023-12-01

if语句计算逻辑表达式并当表达式为真时执行一组语句。可选的elseifelse关键字规定后面的各组语句是否执行。与if搭配的关键字end结束最后一组语句。所有语句都用这4个关键字描绘,且不必用括号。

MATLAB的生成n阶魔方的算法有三种不同情形:n是奇数,n为偶数但不能被4整除,n能被4整除。用下列语句描述。

    if rem(n,2) ~= 0
       M = odd_magic(n)
    elseif rem(n,4) ~= 0
       M = single_even_magic(n)
    else
       M = double_even_magic(n)
    end
    

在此例中,三种情形是互斥的,否则,就执行第一个真条件。

重要的是,要明白有关的算子和if语句是如何对矩阵起作用的。当你想检查两个变量是否相等,你或许会用

    if A == B, ...
    

这是合法的MATLAB代码,当A,B都是标量时执行如你所愿的任务。但当A,B是矩阵时,则A==B并不是测试它们是否相等,而是在哪些位置相等;这样,结果是另一个含有0和1的矩阵,表示元素与元素是否相等。事实上,若A和B不是同尺寸的矩阵,则A==B是错误语句。

检查两变量的等同性的正确方法是用isequal函数,

    if isequal(A,B), ...
    

这里有另一个强调这点的例子。若A,B是标量,下面程序一定不会出现意料之外的情形。但对于大多数矩阵对,包括有相互交换列的魔方,对所有元素,无论A > B, A < B还是A == B都非真,因此执行了else子句。

    if A > B
       'greater'
    elseif A < B
       'less'
    elseif A == B
       'equal'
    else
       error('Unexpected situation')
    end
    

有些函数对把矩阵比较简化为标量条件以用if很有用。包括

    isequal
    isempty
    all
    any