MATLAB中逻辑类型详解

本文详细介绍了Matlab中逻辑变量的表示,包括true和false,以及logical()函数的使用。还讨论了符号运算符和逻辑运算符的用法,如加减乘除、比较运算和短路运算。特别提到了浮点数运算中的舍入误差问题,并给出了避免误差的比较方法。此外,还讲解了运算符的优先级以及如何正确表示复杂的逻辑关系。最后,通过实例展示了浮点数比较时可能出现的逻辑错误和解决策略。
摘要由CSDN通过智能技术生成

逻辑类型

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()     %绝对值
 =         %等于
 e、E、D   %表示1*10^的几次方
 exp       %表示以e为底的指数函数

常见逻辑运算符:

==     %等于
<      %小于   
>      %大于   
>=     %大于等于  
<=     %小于等于  
~=     %不等于
&&     %||     %~      %非     
nand   %与非        
nor    %或非
xor    %异或    
xnor   %同或

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下a和b均为char变量,那么进行运算时,会自动转化为实数
在这里插入图片描述
输出的logical为0,这是因为将char变量的a和b转化为实数时分别为97和98
在这里插入图片描述
因而他们的逻辑关系应为小于,如下:
在这里插入图片描述

短路运算

特别的,在执行或运算时,只需要有一个满足条件,后面的就不会再继续执行,其逻辑值就为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.

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

舍入误差

浮点数的运算经常设计到舍入误差如:
对于1*10几次方的运算有四种运算形式: E或e或D或^
如:

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

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

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Matlab逻辑判断可以使用if语句来实现。if语句的语法是:if 逻辑变量1 执行语句1 elseif 逻辑变量2 执行语句2 else 执行语句3 end。这个语法结构类似于流程图的菱形框,根据逻辑变量的值来确定执行哪个语句块。在判断逻辑变量时,可以使用逻辑运算符 "&" 表示逻辑与操作,而 "||" 表示逻辑或操作。逻辑与操作符 "&" 会判断两个逻辑变量的值,如果两个变量都为真,则整个表达式的值为真。而逻辑或操作符 "||" 只需要判断第一个逻辑变量的值,如果第一个变量为真,则整个表达式的值为真。需要注意的是,逻辑判断逻辑变量通常是标量而不是矩阵123 #### 引用[.reference_title] - *1* *3* [matlab最基础教程(五):判断与流程控制](https://blog.csdn.net/jysf98746/article/details/128798024)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [Matlab逻辑运算"&&"与"&","||"与"|"的区别](https://blog.csdn.net/jiejianmin2666/article/details/78148533)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华毓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值