专栏首页人工智能与演化计算成长与进阶一起来学matlab-matlab学习笔记10 10_3关系运算符和逻辑运算符

一起来学matlab-matlab学习笔记10 10_3关系运算符和逻辑运算符

本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一些负面消息对国内各个高校和业界影响很大。但是我们作为技术人员,更是要奋发努力,拼搏上进,学好技术,才能师夷长技以制夷,为中华之崛起而读书!

本文很多摘录自图书资料,不做任何商业用途,仅做技术分享,侵权删除!请不要放弃自己的理想和道路,加油!!

“参考书籍 《matlab 程序设计与综合应用》张德丰等著 感谢张老师的书籍,让我领略到matlab的便捷 《MATLAB技术大全》葛超等编著 感谢葛老师的书籍,让我领略到matlab的高效

关系运算符

% 示例:关系运算符的用法

format compact % 以紧凑形式的方式输出,以何种方式输出的格式化语句应当事先定义
a=[1 2;3 4]
b=[1 1;1 1]
a>1
a<3
a>=2
a<=2
eq(a,b)     %注意a和b的shape应该相同
a==1        %找出a中等于1的元素
a~=b



a =
     1     2
     3     4
b =
     1     1
     1     1
ans =
     0     1
     1     1
ans =
     1     1
     0     0
ans =
     0     1
     1     1
ans =
     1     1
     0     0
ans =
     1     0
     0     0
ans =
     1     0
     0     0
ans =
     0     1
     1     1

逻辑运算及逻辑函数

  • 逻辑运算和逻辑函数在计算机语言中是普遍存在的,在MATLAB中包含与、或、非、异或4种基本的逻辑运算。逻辑表达式和逻辑函数的值应该为一个逻辑量“真"或“假"MATLAB系统在给出逻辑运算的结果时,以数值“1”代表逻辑“真",以“0”代表“假",但在判断一个量是否为“真”时,以0代表“假",以任意的非零值代表“真"。MATLAB的逻辑运算也是以矩阵为基本运算单元的。

逻辑运算

示例

  • 在M文件中,可以使用and(A,B)、or(A,B)、not(A)分别进行"与","或"*,"非"的操作,和运算符得到的结果一致

逻辑函数

all 判断是否所有元素为非零数

A=[0 1 2;3 4 5]
disp('all(A)')
all(A)
disp('all(all(A))')
all(all(A)) % 按照列进行操作
disp('A>=1')
A>=1
disp('all(A>=1)')
all(A>=1)
% 判断一个矩阵中的所有元素是否都大于等于1 all(all(A>=1))=1

A =
     0     1     2
     3     4     5
all(A)
ans =
     0     1     1
all(all(A))
ans =
     0
A>=1
ans =
     0     1     1
     1     1     1
all(A>=1)
ans =
     0     1     1

注意:MATLAB下标索引从1开始

A=[0 1 2;3 4 5]
disp('all(A)') % 按照列的殊顺序
all(A)
disp('all(A,2)') % 按照行的顺序
all(A,2)
c=rand(1,2,3)
all(c)


A =
     0     1     2
     3     4     5
all(A)
ans =
     0     1     1
all(A,2)
ans =
     0
     1
c(:,:,1) =
    0.6787    0.7577
c(:,:,2) =
    0.7431    0.3922
c(:,:,3) =
    0.6555    0.1712
ans(:,:,1) =
     1
ans(:,:,2) =
     1
ans(:,:,3) =
     1

any 判断是否有一个向量元素为非零数

>> A=[0 1 2; 0 3 4]
A =
     0     1     2
     0     3     4
>> any(A)
ans =
     0     1     1
>> any(A,2)
ans =
     1
     1

exist 查看变量或函数是否存在

find:找出向量或矩阵中非零元素的位置标识

  • 在许多情况下,都需要对矩阵中符合某一特定条件的元素的位置进行定位,如将某一矩阵中为零的元素设为1等。如果这个矩阵的元素非常多,手工修改非常麻烦,灵活运用find函数和各种逻辑及关系运算可以是实现绝大多数条件的元素定位。find函数的基本用法有k=find(A),[i,j]=find(A),[i,j,v]=find(A),这是个很有用的逻辑函数,在对数组元素进行查找,替换和修改变化等操作中占有非常重要的地位。

k=find(A)

  • 此函数返回由矩阵A的所有非零元素的位置标识组成的向量。如果没有非零元素会返回空值。二维数组先寻找列再寻找行

三维数组寻找值

[i,j]=find(A)

  • 此函数返回矩阵A的非零元素的行和列的表示,其中i代表行标而j代表列标。此函数经常用在稀疏矩阵中。在多维矩阵中通常将第一维用i表示,将其余各维作为第二维,用j表示。

[i,j,v]=find(A)

  • 此函数返回矩阵A的非零元素的行和列的标识,其中i代表行标而j代表列表,同时,将相应的非零元素的值放入列向量v中,即i和j的值与[i,j]=find(A)取值相同,只是增加了非零元素的值这一项

利用find()函数实现部分矩阵的替换

isfinite:确认矩阵元素是否为有限值

isempty:确认矩阵是否为空矩阵

  • 不要把空矩阵、零矩阵及矩阵不存在3个概念混淆,空矩阵说明矩阵存在,但是矩阵没有元素;零矩阵是指矩阵的所有元素都为零;矩阵不存在是指当前的工作空间中没有定义此矩阵变量。isempty(A)可以判断一个存在的矩阵变量是否为空矩阵,如果矩阵为空矩阵则返回逻辑“真",否则返回逻辑“假",一个空矩阵至少有一维是零,如0×0、0×5、0×3×3等。空矩阵没有任何元素,可以用函数size(A)来判断,如果其中有一维为零,则A就是零矩阵。(因为还有其他多个维度有可能其中只有方括号但是没有值)

isequal:判断几个对象是否相等

  • isequal(A,B,C...)如果要判断的所有对象A,B,C...具有相同的类型、大小和内容,对于矩阵来说,就是所有矩阵的维数相同,而且矩阵元素的数值相同,如果满足这样的条件,此函数返回逻辑“真",反之,只要有一个对象与其他对象不相同,就会返回逻辑“假"

isnumeric:判断对象是否是数据

  • isnumeric(A)如果是数据矩阵,如稀疏矩阵、双精度矩阵、复数矩阵等,此函数返回逻辑“真",反之,如果A是字符串、结构体矩阵等,则返回逻辑“假”

其他逻辑函数

issparse 判断是否为稀疏矩阵 isstr 判断是否为字符串 islogical 判断一个矩阵是否为逻辑矩阵 isfield 判断对象是否为某个结构体矩阵的域 isstruct 判断是否为结构体 ishandle 判断是否为图像句柄

本文分享自微信公众号 - DrawSky(wustcsken),作者:CloudXu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一起来学matlab-matlab学习笔记10 10_1一般运算符

    本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一...

    DrawSky
  • matlab 单元数组和元胞数组

    本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一些负面...

    DrawSky
  • 一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind

    本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一...

    DrawSky
  • 发明了1美元显微镜、20美分离心机之后,他又做了一个拯救贫穷实验室的新仪器

    继发明 1 美元的折叠显微镜、20 美分的纸质离心机、10 美元的寄生虫检测贴片后,这位提倡“节俭科学”的印度裔生物物理学家 Manu Prakash 开始对人...

    生信宝典
  • 如何在浏览器上跑深度学习模型?并且一行JS代码都不用写

    翻译 | 林椿眄 编辑 | 周翔 2017 年 8 月,华盛顿大学的陈天奇团队发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机...

    AI科技大本营
  • session与cookie详解

    session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取...

    A梦多啦A
  • CSS侧边栏宽度不动(更改页面宽度时),内容区宽度自适应

    一个页面,左栏是内容栏content,右栏是侧边栏sidebar。如何使侧边栏宽度不动(更改页面宽度时),内容区宽度自适应呢?为了保证内容区宽度自适应,先不设定...

    欢醉
  • SpringAOP那些无处不在的动态代理

    Java架构
  • 13-TypeScript单例模式

    在JavaScript中,要实现设计模式比较复杂。而在TypeScript中因为使用面向对象的思想编程,要实现设计模式的方式与后端语言C#、Java等非常类似。...

    用户1910585
  • when is view bound to its corresponding controller instance - 40

    * oController.connectToView(oThis); * oView.attachAfterRenderin...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券