MATLAB 中的大多数函数都作用于两种类型的数字:有理数(rational numbers)和布尔值(boolean numbers)


有理数

有理数是我们通常所理解的数字,例如 1、3 和 -4.5 都属于有理数。MATLAB 默认将有理数以双精度(double)形式存储,这决定了变量中小数位的精度,也就是数值的准确度。

需要注意的是,MATLAB 中像 π(pi)这样的无理数是以有理近似值表示的,除非你使用 符号数学工具箱(symbolic math toolbox),具体可参考该工具箱相关内容。


布尔值(逻辑值)

布尔值只有两种:TRUE(真)和FALSE(假),在 MATLAB 中分别用 10 表示。布尔变量在 MATLAB 中实际上与 double 类型可以互换使用,也就是说,布尔运算可以直接用于 double 数组,反之亦然。在这种情况下,任何非零数都被视为“TRUE”。

大多数有理数运算符同样也适用于复数,但复数不能像实数那样与布尔值互换使用。

注意:MATLAB 在代码和文档中将布尔值称为 “logical”,而不是 “Boolean”。


单值上的有理数运算符

MATLAB 拥有所有常见的有理数运算符。但需要特别注意的是:除非另有指定,MATLAB 所有运算默认都是针对整个数组执行的,遵循矩阵定义
虽然我们现在只讨论单个值的操作,但在处理数组时,需要区分矩阵运算与逐元素运算。

示例:

% 加法
a = 1 + 2

% 减法
b = 2 - 1

% 矩阵乘法
c = a * b

% 矩阵除法(伪逆)
d = a / b

% 幂运算
e = a ^ b

取模函数 mod(a, b) 返回 a 除以 b 的余数:

% 取模
remainder = mod(a, b)

除了 mod 之外,上述所有函数都适用于复数


关系运算符

  • 等于 ==:当两个参数相等时,返回“TRUE(1)”。

    注意不要与赋值运算符 = 混淆。

示例:

% 比较关系
>> a = 5; b = 5;
>> a == b
ans =
  logical
  1

% 赋值操作
>> a = 5; b = 3;
>> a = b
a =
  3

第一个例子中,返回了逻辑值 1(表示真);第二个例子中,变量 a 被赋值为 b 的值。

其它关系运算符包括:

运算符 含义
> 大于
< 小于
>= 大于等于
<= 小于等于

示例:

>> a = 3; b = 5;
>> a <= b
ans = 1

>> b < a
ans = 0

单值上的布尔运算符

布尔运算符包括:

运算符 含义
& 逻辑与 AND
` `
~ 逻辑非 NOT(取反)

在 MATLAB 中,0 表示假,任何非零值(通常是 1)表示真

示例:

% 与运算
>> y = 1 & 0
y = 0

>> y = 1 & 1
y = 1

% 或运算
>> y = 1 | 0
y = 1

>> y = 1 | 1
y = 1

取反运算 使用 ~,用于将 TRUE 变为 FALSE,反之亦然:

>> c = (a == b)
c = 1

>> ~c
ans = 0

这是非常有用的,尤其是在条件语句(如 ifswitchtry)或循环语句(如 forwhile)中,这些语句默认判断条件为 TRUE 时才执行。
若想在条件为 FALSE 时执行,就需要用取反符号 ~ 将其转为 TRUE


优先级提示:在 MATLAB 中,逻辑非(~)的优先级高于逻辑与(&)和逻辑或(|),除非通过括号明确运算顺序。

示例:

>> y = ~1 & 0
y = 0

>> y = ~(1 & 0)
y = 1

参考资料:

[1]
https://web.archive.org/web/20210322123642/https://www.maths.unsw.edu.au/sites/default/files/MatlabSelfPaced/lesson8/MatlabLesson8_Logic.html

Last modified: Monday, 14 April 2025, 6:43 PM