Matlab中条件语句-if,elseif,else使⽤
⽬录
if, elseif, else是条件为 true 时执⾏语句。
语法
if expression
statements
elseif expression
statements
else
statements
end
表达式
表达式可以包含关系运算符(例如 < 或 ==)和逻辑运算符(例如 &&、|| 或 ~)。使⽤逻辑运算符 and 和 or 创建复合表达式。MATLAB® 按照运算符优先级规则从左⾄右计算复合表达式。
在 if...end 块的条件表达式内,逻辑运算符 & 和 | 的⾏为与短路运算符的⾏为相同。此⾏为分别相当于 && 和 ||。由于 && 和 || 在条件表达式和语句中⼀致短路,因此,建议在该表达式中使⽤ && 和 ||,⽽不是 & 和 |。例如:
x = 42;
if exist('myfunction.m','file') && (myfunction(x) >= pi)
disp('Expressions are true')
end
表达式的第⼀部分的计算结果为false。因此,MATLAB不需要计算表达式的第⼆部分,否则会导致未定义的函数错误。
提⽰
可以嵌套任意数量的if语句。每个if语句需要⼀个 end 关键字。
避免在elseif关键字 (else if) 内于else之后添加空格。空格会创建嵌套的if语句,该语句要求独⽴的end关键字。
说明
if expression, statements, end 计算表达式并在表达式为 true 时执⾏⼀组语句。表达式的结果⾮空并且仅包含⾮零元素(逻辑值或
ncols = 6;
A = ones(nrows,ncols);
遍历矩阵并为每个元素指定⼀个新值。对主对⾓线赋值 2,对相邻对⾓线赋值 -1,对其他位置赋值 0。
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 = 4×6
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。
matlab定义函数表达式limit = 0.75;
A = rand(10,1)
A = 10×1
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
测试数组的相等性
使⽤ isequal ⽽不是 == 运算符⽐较数组来测试相等性,因为当数组的⼤⼩不同时 == 会导致错误。创建两个数组。
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
测试值的不相等性
确定值是否为⾮零值。使⽤ ~= 运算符测试不等式。
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.