一起来学matlab-matlab学习笔记10

10_3关系运算符和逻辑运算符

觉得有用的话,欢迎一起讨论相互学习~Follow Me

参考书籍

《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 判断是否为图像句柄

matlab学习笔记10_3关系运算符和逻辑运算符的更多相关文章

  1. matlab学习笔记10 一般运算符

    一起来学matlab-matlab学习笔记10 10_1一般运算符 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张 ...

  2. [原创]java WEB学习笔记39:EL中的运算符号(算术运算符,关系运算符,逻辑运算符,empty运算符,条件运算符,括号运算符)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. .Net基础篇_学习笔记_第四天_关系运算符和逻辑运算符

    1.关系运算符 包含:>   <   <=  >=   ==  != 以及bool类型中的true和false. 2.逻辑运算符 与 && 或 || 非 ! 注 ...

  4. Go语言学习笔记四: 运算符

    Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...

  5. c语言中类型转换与赋值运算符、算术运算符、关系运算符、逻辑运算符。原码、反码、补码。小解。

    类型转换 自动转换 小范围的类型能够自动转换成大范围的类型.short->int->long->float->double 强制类型转换 (类型名)变量或数值 #include ...

  6. Java的算数运算符、关系运算符、逻辑运算符、位运算符

    JAVA的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符 算数运算符(9):+  -  *  /  %  ++  -- 关系运算符(6):==  !=  >  >=  & ...

  7. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  8. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  9. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

随机推荐

  1. Python并发编程-线程同步(线程安全)

    Python并发编程-线程同步(线程安全) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 线程同步,线程间协调,通过某种技术,让一个线程访问某些数据时,其它线程不能访问这些数据,直 ...

  2. python开发应用之-时间戳

    golang 获取时间戳用time.Now().Unix(),格式化时间用t.Format,解析时间用time.Parse package main import ( "fmt" ...

  3. Browsersync 省时浏览器同步测试工具,浏览器自动刷新,多终端同步

    官网地址 http://www.browsersync.cn/ 1.安装 BrowserSync npm install -g browser-sync 2.启动 BrowserSync // --f ...

  4. Celery + Redis 的探究

    Celery + Redis 的探究 文本尝试研究,使用 redis 作为 celery 的 broker 时,celery 的交互操作同 redis 中数据记录的关联关系. 不在乎过程的,可以直接看 ...

  5. windows查看端口被占用情况

    首先,使用cmd命令打开CMD命令窗口 使用下面的命令来查看某端口被占用的情况,以8035为例: netstat -ano|findstr " 结果如下图: 最后一列的6532为PID号,根 ...

  6. 域渗透:pth(pass the hash)

    pass the hash原理: 在Windows系统中,通常会使用NTLM身份认证,NTLM认证不使用明文口令,而是使用口令加密后的hash值,hash值由系统API生成(例如LsaLogonUse ...

  7. LeetCode 1048. Longest String Chain

    原题链接在这里:https://leetcode.com/problems/longest-string-chain/ 题目: Given a list of words, each word con ...

  8. c++合并两个序列函数merge()和inplace_merge()

    大家在写归并排序时是不是觉得合并两个序列有点麻烦,有快速的方法吗? 我们全部函数自己写,比如: #include<bits/stdc++.h> using namespace std; # ...

  9. LOJ P10011 愤怒的牛 题解

    每日一题 day36 打卡 Analysis 非常水的二分模板,就直接二分答案,用贪心策略check就好了 #include<iostream> #include<cstdio> ...

  10. Greenplum 资源队列(转载)

    1.创建资源队列语法 Command:     CREATE RESOURCE QUEUEDescription: create a new resource queue for workload m ...