Matlab使用if语句来增加条件判断

4
(2)

今天,来教大家Matlab中if条件语句的使用。if用于编写条件语句,当满足条件时执行相关语句。此外,与之搭配的有elseif语句,可以理解为满足其他条件时,执行语句。所以,一般情况下if语句可以包含多个elseif语句,也可不不存在elseif语句。if语句以if开始编写,end为判断结束。

Matlab使用if语句来增加条件判断

本文,主要讲解Matlab中if语句的常见用法、语法说明、使用 if、elseif 和 else 指定条件、比较数组、测试数组的相等性、比较字符向量、测试值的不相等性、评估表达式中的多个条件。

下面,我们首先给出Matlab中关于if函数的帮助文档:

>> help if
 if Conditionally execute statements.
    The general form of the if statement is
 
       if expression
         statements
       ELSEIF expression
         statements
       ELSE
         statements
       END
 
    The statements are executed if the real part of the expression 
    has all non-zero elements. The ELSE and ELSEIF parts are optional.
    Zero or more ELSEIF parts can be used as well as nested if's.
    The expression is usually of the form expr rop expr where 
    rop is ==, <, >, <=, >=, or ~=.
 
    Example
       if I == J
         A(I,J) = 2;
       elseif abs(I-J) == 1
         A(I,J) = -1;
       else
         A(I,J) = 0;
       end

常见用法

if expression
    statements
elseif expression
    statements
else
    statements
end

语法说明

if expression, statements, end 计算表达式并在表达式为 true 时执行一组语句。表达式的结果非空并且仅包含非零元素(逻辑值或实数值)时,该表达式为 true。否则,表达式为 false。

elseif 和 else 模块是可选的。这些语句仅在 if…end 块中前面的表达式为 false 时才会执行。if 块可以包含多个 elseif 块。

使用 if、elseif 和 else 指定条件

创建一个由 1 组成的矩阵。下面代码表示生成一个4行6列的全1矩阵:

nrows = 4;
ncols = 6;
A = ones(nrows,ncols);

遍历矩阵并为每个元素指定一个新值。对主对角线赋值 2,对相邻对角线赋值 -1,对其他位置赋值 0。这里,你需要结合我们前面讲解的for语句的使用方法才可以明白:《Matlab使用for语句来编写一定次数的循环》。

for c = 1:ncols
    for r = 1:nrows
        
        if r == c
            A(r,c) = 2;
        elseif abs(r-c) == 1
            A(r,c) = -1;
        else
            A(r,c) = 0;
        end
        
    end
end
A

输出结果为:

A =

     2    -1     0     0     0     0
    -1     2    -1     0     0     0
     0    -1     2    -1     0     0
     0     0    -1     2    -1     0
Matlab使用if语句来增加条件判断

比较数组

在数组中包含关系运算符的表达式(例如 A > 0)仅在结果中的每个元素都为非零时才为 true。

使用 any 函数测试任何结果是否为 true。

limit = 0.75;
A = rand(10,1)

输出结果为:

A =

    0.8147
    0.9058
    0.1270
    0.9134
    0.6324
    0.0975
    0.2785
    0.5469
    0.9575
    0.9649
if any(A > limit)
    disp('There is at least one value above the limit.')
else
    disp('All values are below the limit.')
end

输出结果为:

There is at least one value above the limit.

测试数组的相等性

这里,只能使用 isequal 而不是 == 运算符比较数组来测试相等性,因为当数组的大小不同时 == 会导致错误。

创建两个数组。

A = ones(2,3);
B = rand(3,4,5);

如果 size(A) 与 size(B) 相同,则会串联这两个数组;否则显示一条警告并返回一个空数组。

if isequal(size(A),size(B))
   C = [A; B];
else
   disp('A and B are not the same size.')
   C = [];
end

输出结果为:

A and B are not the same size.

比较字符向量

使用 strcmp 比较字符向量。当字符向量的大小不同时,使用 == 测试相等性会产生错误。

reply = input('Would you like to see an echo? (y/n): ','s');
if strcmp(reply,'y')
  disp(reply)
end

输出结果:

Would you like to see an echo? (y/n): 

当你输入y,就会显示y;当你输入n或者其他字符,无任何显示。

测试值的不相等性

确定值是否为非零值。使用 ~= 运算符测试不等式。

x = 10;
if x ~= 0
    disp('Nonzero value')
end

输出结果为:

Nonzero value

评估表达式中的多个条件

确定值是否在指定范围内。

x = 10;
minVal = 2;
maxVal = 6;

if (x >= minVal) && (x <= maxVal)
    disp('Value within specified range.')
elseif (x > maxVal)
    disp('Value exceeds maximum value.')
else
    disp('Value is below minimum value.')
end

输出结果为:

Value exceeds maximum value.

该代码用于判断x值10是在最大值6与最小值2之间,还是比最大值大,还是比最小值小。

共计2人评分,平均4

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

转载文章,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/articles/2294.html

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2021年04月03日 21:17
下一篇 2021年04月05日 21:45

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号