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

  • 相关阅读:
    HAproxy 1.5 dev14 发布
    IBM/DW 使用 Java 测试网络连通性的几种方法
    Skype 4.1 Linux 发布,支持微软帐号登录
    Dorado 7.1.20 发布,Ajax的Web开发平台
    Aspose.Slides for Java 3.0 发布
    开发版本 Wine 1.5.18 发布
    BitNami Rubystack 开始支持 Ruby 2.0
    XWiki 4.3 正式版发布
    Silverlight实例教程 Out of Browser的Debug和Notifications窗口
    Silverlight实例教程 Out of Browser与Office的互操作
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/11715568.html
Copyright © 2011-2022 走看看