跳转到内容

MATLAB编程/布尔型和有理数

来自Wikibooks,开放世界的开放书籍


大量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



参考文献

[编辑 | 编辑源代码]

[1]

  1. https://web.archive.org/web/20210322123642/https://www.maths.unsw.edu.au/sites/default/files/MatlabSelfPaced/lesson8/MatlabLesson8_Logic.html
华夏公益教科书