0
点赞
收藏
分享

微信扫一扫

MATLAB中的逻辑类型

一葉_code 2022-04-14 阅读 63

逻辑类型

Matlab中存储逻辑变量的类型有两种,为true和false,分别由1和0来表示。

函数logical() 可以将任何非零的数值转化为true,将数值0转化为false.

a=3;b=0;
c=logical(a)
d=logical(b)

在这里插入图片描述
也就是说只有数值为0时的逻辑值是false,为0
只要数值不为0时的逻辑值就是true,为1
如:
3<=5为true
在这里插入图片描述
3=3为true
在这里插入图片描述
3不等于3为false
在这里插入图片描述

符号运算符和逻辑运算符

常见符号运算符:

 a+b       %加
 a-b       %减
 a*b       %乘
 a\b或a/b  %除
 a^b       %abs()     %绝对值
 =         %等于

常见逻辑运算符:

==     %等于
<      %小于   
>      %大于   
>=     %大于等于  
<=     %小于等于  
~=     %不等于
and    %与
or     %或
not    %非     
nand   %与非        
nor    %或非
xor    %异或    
xnor   %同或

注:a/b表示a ÷ b ,a\b 表示b÷ a
=是用来赋值的 如:a=b指的是把b的值赋给a
是用来对比的 如:a==b指的是判断a和b的值是否相等

在这里插入图片描述
在这里插入图片描述

短路运算

特别的,在执行或运算时,只需要有一个满足条件,后面的就不会再继续执行,其逻辑值就为1.
比如:在未定义a的情况下,执行逻辑上1=1或a小于3时,以下为两种情况:
1、 1==1 || a<3

由于 1= =1是成立的,因而或指令就不再执行后面的a<3,所以输出逻辑值为1
在这里插入图片描述
2、a<3 || 1==1
在这里插入图片描述
按照顺序依次执行,首先执行a<3,由于a未定义,所以输出结果便如上。

运算符的优先级

无论是符号运算符还是逻辑运算符都是有优先级的
优先级如下表:
在这里插入图片描述
此外逻辑运算输出的值只有两个,一个是1,一个是0。这就一些手写的数学运算无法正常使用。比如要表示:10>5>2时:
在这里插入图片描述

显示的是逻辑0,也就是false。这个式子为啥是false呢,原因就是逻辑运算输出的值只有两个,一个是1,一个是0。按照顺序首先执行10>5,为true,因而输出值为1,之后再执行第二段的逻辑运算便是1>2了。所以输出值变成了false为0.

因而要想表达10>5>2,应该为10>5 && 5>2.

如下:
在这里插入图片描述

舍入误差

浮点数的运算经常设计到舍入误差如:
对于e的运算有四种运算形式: exp或E或e或D
如:

1*exp (-10)+1*exp (0)-1*exp (0)==1*exp (-10)
1E-10+1E0-1E0==1E-10
1e-10+1e0-1e0==1e-10
1D-10+1D0-1D0==1D-10

同时运算该对比逻辑后,会发现其逻辑值为false为0.这是由于发生了舍入误差。如下:其逻辑为0
在这里插入图片描述
将他们分开来一步步计算的话便可以发现端倪,其中有微小的误差:
在这里插入图片描述
这些误差导致了其对比逻辑为0.因而一般不会用“==”来对比两个浮点数的大小。
经常用的是差的绝对值,再设一个阈值:
在这里插入图片描述

举报

相关推荐

0 条评论