MATLAB编程-简介
MATLAB 中的大多数函数都作用于两种类型的数字:有理数(rational numbers)和布尔值(boolean numbers)。
有理数
有理数是我们通常所理解的数字,例如 1、3 和 -4.5 都属于有理数。MATLAB 默认将有理数以双精度(double)形式存储,这决定了变量中小数位的精度,也就是数值的准确度。
需要注意的是,MATLAB 中像 π(pi)这样的无理数是以有理近似值表示的,除非你使用 符号数学工具箱(symbolic math toolbox),具体可参考该工具箱相关内容。
布尔值(逻辑值)
布尔值只有两种:TRUE(真)和FALSE(假),在 MATLAB 中分别用 1 和 0 表示。布尔变量在 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
这是非常有用的,尤其是在条件语句(如 if
、switch
、try
)或循环语句(如 for
、while
)中,这些语句默认判断条件为 TRUE 时才执行。
若想在条件为 FALSE 时执行,就需要用取反符号 ~
将其转为 TRUE。
优先级提示:在 MATLAB 中,逻辑非(~)的优先级高于逻辑与(&)和逻辑或(|),除非通过括号明确运算顺序。
示例:
>> y = ~1 & 0
y = 0
>> y = ~(1 & 0)
y = 1