今天,来教大家Matlab中if条件语句的使用。if用于编写条件语句,当满足条件时执行相关语句。此外,与之搭配的有elseif语句,可以理解为满足其他条件时,执行语句。所以,一般情况下if语句可以包含多个elseif语句,也可不不存在elseif语句。if语句以if开始编写,end为判断结束。
本文,主要讲解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
比较数组
在数组中包含关系运算符的表达式(例如 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之间,还是比最大值大,还是比最小值小。
转载文章,原文出处:MathWorks官网,由古哥整理发布
如若转载,请注明出处:https://iymark.com/articles/2294.html