MATLAB编程/布尔型和有理数
大量MATLAB函数是对两种类型的数字进行操作:有理数和布尔数。
有理数是我们通常想到的数字。1、3和-4.5都是有理数。默认情况下,MATLAB将有理数存储为双精度浮点数,它表示存储在每个变量中的小数位数的度量,以及值的准确度。请注意,MATLAB使用有理数近似表示无理数(如π),除非使用符号数学工具箱。有关详细信息,请参阅该部分。
布尔数要么为“TRUE”(真),要么为“FALSE”(假),分别用MATLAB中的1和0表示。MATLAB中的布尔变量实际上可以与双精度浮点数互换,因为布尔运算符可以与双精度浮点数数组一起使用,反之亦然。在这种情况下,任何非零数字都被视为“TRUE”(真)。
大多数有理数运算符也适用于复数。但是,复数不能像实数有理数那样与布尔值互换。
注意:MATLAB将布尔值称为“逻辑值”,并且在代码或文档中不使用“布尔”一词。
MATLAB具有所有标准的有理数运算符。但是,需要注意的是,除非另有说明,否则所有有理数运算都针对整个数组执行,并使用矩阵定义。因此,即使我们现在只讨论单值运算,当我们进入数组时,区分矩阵和逐元素乘法(例如)将非常重要:加法、减法、乘法、除法、指数运算符。
%addition
a = 1 + 2
%subtraction
b = 2 - 1
%matrix multiplication
c = a * b
%matrix division (pseudoinverse)
d = a / b
%exponentiation
e = a ^ b
模运算函数返回参数相除时的余数,因此a模b表示a除以b的余数。
%modulo
remainder = mod(a,b)
除了模运算之外,所有这些函数都适用于复数。
相等运算符'=='如果两个参数相等,则返回“TRUE”(真)(1)。这不能与赋值运算符'='混淆,后者将值赋给变量。
>> %relational
>>a=5;b=5;
>>a==b
ans =
logical
1
%Assignment
>>a=5;b=3;
>>a=b
a = 3
请注意,在第一种情况下,返回的值为1(真),但在第二种情况下,a被赋予b的值。
大于、小于、大于等于、小于等于分别由>、<、>=、<=给出。它们都返回真或假的值。示例
>>a=3;b=5;
>>a<=b
ans = 1
>>b<a
ans = 0
布尔运算符为&(布尔AND)、|(布尔OR)和~(布尔NOT/否定)。值为零表示假,任何非零值(通常为1)都被视为真。
以下是它们的作用
>>%boolean AND
>> y = 1 & 0
y = 0
>> y = 1 & 1
y = 1
>>%boolean OR
>> y = 1 | 0
y = 1
>> y = 1 | 1
y = 1
MATLAB中的否定运算由符号~给出,它将任何FALSE(假)值转换为TRUE(真),反之亦然。
>> c = (a == b)
c = 1
>> ~c
ans = 0
这是必要的,因为条件语句(IF/SWITCH/TRY)和循环语句(FOR/WHILE)始终查找为TRUE(真)的语句,因此,如果您希望它仅在语句为FALSE(假)时执行某些操作,则需要使用否定运算将其更改为真语句。
除非AND或OR语句在括号中,否则NOT运算符在MATLAB中优先于AND和OR运算符。
>> y = ~1 & 0
y = 0
>> y = ~(1&0)
y = 1