zoukankan      html  css  js  c++  java
  • matlab基本函数find

    一起来学演化计算-matlab基本函数find

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

    • 找到非零元素的索引和值

    语法

    • k = find(X)
      • k = find(X)返回一个向量,其中包含数组X中每个非零元素的 线性索引
      • 如果X是一个向量,那么find返回一个与X方向相同的向量
      • 如果X是一个多维数组,那么find返回结果的线性索引的列向量
      • 如果X不包含非零元素或为空,则find返回一个空数组
    • k = find(X,n) k = find(X,n)返回与X中的非零元素对应的前n个索引
    • k = find(X,n,direction) k = find(X,n,direction),其中direction为'last',查找X中的最后n个非零元素
    • [row,col] = find( ___ ) 使用前面语法中的任何输入参数返回数组X中每个非零元素的行和列下标
    • [row,col,v] = find( ___ ) 返回向量v,其中包含X的非零元素

    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()函数实现部分矩阵的替换

    在这里插入图片描述

    示例

    找到矩阵中的零元素和非零元素

    X = [1 0 2; 0 1 1; 0 0 4]
    X =
    
         1     0     2
         0     1     1
         0     0     4
    
    k = find(X)
    k =
    
         1
         5
         7
         8
         9
    % 顺序是从上往下从左至右进行排列的
    k2 = find(~X)
    k2 =
    
         2
         3
         4
         6
    

    找到满足特定条件的元素

    X = magic(4)
    X =
    
        16     2     3    13
         5    11    10     8
         9     7     6    12
         4    14    15     1
    
    k = find(X<10,5)
    k =
    
         2
         3
         4
         5
         7
    
    X(k)
    ans =
    
         5
         9
         4
         2
         7
    

    元素等于特定数值

    • 等于特定的数值使用"==" 整型数值的情况
    x = 1:2:20
    x =
    
         1     3     5     7     9    11    13    15    17    19
    
    k = find(x==13)
    k =
    
         7
    
    • 要查找非整数值,请使用基于数据的容差值。否则,由于浮点舍入错误,结果有时是一个空矩阵
    y = 0:0.1:1
    y =
    
      Columns 1 through 7
    
             0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000
    
      Columns 8 through 11
    
        0.7000    0.8000    0.9000    1.0000
    
    k = find(y==0.3)
    k =
    
       Empty matrix: 1-by-0
    
    k = find(abs(y-0.3) < 0.001)
    k =
    
         4
    

    寻找最后几个非零项目

    X = magic(6);
    X(1:2:end) = 0 % 索引从左上角往下后往右
    X =
    
         0     0     0     0     0     0
         3    32     7    21    23    25
         0     0     0     0     0     0
         8    28    33    17    10    15
         0     0     0     0     0     0
         4    36    29    13    18    11
    % 寻找最后几个非零元素的索引
    k = find(X,4,'last')
    k =
    
        30
        32
        34
        36
    

    寻找满足多约束

    • 找出4×4矩阵中大于0小于10的前三个元素。指定两个输出,将行和列下标返回给元素
    X = [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21]
    X =
    
        18     3     1    11
         8    10    11     3
         9    14     6     1
         4     3    15    21
    
    [row,col] = find(X>0 & X<10,3)
    row =
    
         2
         3
         4
    
    
    col =
    
         1
         1
         1
    
    

    非零元素的下标和值

    • 求3×3矩阵中的非零元素。指定三个输出来返回行下标、列下标和元素值
    X = [3 2 0; -5 0 7; 0 0 1]
    X =
    
         3     2     0
        -5     0     7
         0     0     1
    
    [row,col,v] = find(X)
    row =
    
         1
         2
         1
         2
         3
    
    
    col =
    
         1
         1
         2
         3
         3
    
    
    v =
    
         3
        -5
         2
         7
         1
    
    

    输入参数

    输出参数

  • 相关阅读:
    C#中关于值类型和引用类型的区别
    Win32_PhysicalMedia 硬盘 参数说明
    Win32_DiskDrive 硬盘 参数说明
    Win32_Processor CPU 参数说明
    通过EF操作Sqlite时遇到的问题及解决方法
    在VS2017中连接到SQLite数据源(dbfist)
    Sqlite 的管理工具SQLite
    Navicat for mysql 免费破解工具+教程
    基于C#的机器学习--模糊逻辑-穿越障碍
    基于C#的机器学习--惩罚与奖励-强化学习
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/11262878.html
Copyright © 2011-2022 走看看