zoukankan      html  css  js  c++  java
  • matlab学习笔记10_3关系运算符和逻辑运算符

    一起来学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 判断是否为图像句柄

  • 相关阅读:
    java8流处理,不生产博客,做个好博客的搬运工
    java.util.ConcurrentModificationException异常分析
    App登录状态维持
    tomcat没有发布maven项目依赖的本地jar包
    Json对象和Json字符串的区别
    java过滤关键词
    过滤3个字节以上的utf-8字符
    Incorrect string value: 'xF0x9Fx98x84xF0x9F
    SpringBoot配置属性之DataSource
    linux nohup命令使程序在后台运行的方法
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/11715568.html
Copyright © 2011-2022 走看看