一起来学演化计算-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

输入参数

输出参数

matlab基本函数find的更多相关文章

  1. Matlab基本函数-conj函数

    Matlab基本函数-conj函数 1.conj函数:用于计算复数的共轭值 2.用法说明:y=conj(x)函数计算复数x的共轭值.输出结果y的维数跟输入x的维数一致,返回值为:real(y)-i*i ...

  2. matlab基本函数strcmp num2str 字符串格式

    一起来学演化计算-matlab基本函数strcmp num2str 字符串格式 觉得有用的话,欢迎一起讨论相互学习~Follow Me strcmp 比较字符串 语法 tf = strcmp(s1,s ...

  3. matlab基本函数inf, isempty, round, floor, fix

    一起来学演化计算-matlab基本函数inf, isempty, round, floor ,fix 觉得有用的话,欢迎一起讨论相互学习~Follow Me inf matlab中 inf无穷大量+∞ ...

  4. matlab基本函数randperm end数组索引

    一起来学演化计算-matlab基本函数randperm end数组索引 觉得有用的话,欢迎一起讨论相互学习~Follow Me 随机排列 语法 p = randperm(n) p = randperm ...

  5. matlab基本函数min

    一起来学演化计算-matlab基本函数min 觉得有用的话,欢迎一起讨论相互学习~Follow Me 找到数组中最小的元素 语法 M = min(A) 返回A的最小元素 如果A是一个向量,那么min( ...

  6. matlab基本函数 randn,rand,orth

    一起来学演化计算-matlab基本函数randn, rand, orth 觉得有用的话,欢迎一起讨论相互学习~Follow Me randn X = randn 随机从正态分布中选一个数作为结果 X ...

  7. matlab基本函数sort

    一起来学演化计算-matlab基本函数sort 觉得有用的话,欢迎一起讨论相互学习~Follow Me sort 对数组元素排序 语法 B = sort(A) 按照大小不等于1的第一个数组维度对A的元 ...

  8. PCA and kmeans MATLAB实现

    MATLAB基础知识 l  Imread:  读取图片信息: l  axis:轴缩放:axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 设置 x.y 和  ...

  9. 使用matlab处理图像的基础知识

    MATLAB基本函数一 矩阵运算 1.基本算数运算(加减乘除) + -运算要求矩阵维数相同,例m*n * /运算,例A=B*C,B矩阵是m*n矩阵,B是n*p矩阵,则A是m*p矩阵 A/B相当于A*i ...

随机推荐

  1. 【DP入门到入土】

    DP例题较多,可以根据自己需求食用~ update:下翻有状压DP入门讲解,也只有讲解了(逃~ DP的实质,就是状态的枚举. 一般用DP解决的问题,都是求计数或最优问题,所以这类问题,我们也可以用搜索 ...

  2. codevs:2849 素数判定 3:输入一个正整数x(3<=x<=100000),判断x是否是质数,如果是质数则输出信息“prime”,否则输出“composite”。

    #include<iostream>#include<cstdio>#include<cmath>using namespace std;int a[2];int ...

  3. 二扩域(GF(2^m))中的逆矩阵

    通常的逆矩阵可以用高斯消去法计算.十分有效.还可以使用LU分解,QR分解等. 二扩域中的逆矩阵则不同.看似简单,其实有别:它的所有元素定义在GF(2^m)中.从理论来看,似乎也可以用高斯消去法,只是计 ...

  4. makefile通用模板(二)

    DIR_INC = ./include DIR_SRC = ./src DIR_OBJ = ./obj DIR_BIN = ./bin DIR_LIB = /home/exbot/lib LIBS = ...

  5. BAT 删除超过xx天的文件

    @echo offecho 删除n天前的备分文件和日志forfiles /p "C:\ShareF" /m *.zip /d -7 /c "cmd /c del @pat ...

  6. el-select定义初始值并且可以修改

    [](https://img2018.cnblogs.com/blog/1338470/201811/1338470-20181112152013318-1731627947.png <el-f ...

  7. 【多线程与并发】:Java中的锁

    锁的概念 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁可以防止多个线程同时访问共享资源(但有些锁可以允许多个线程并发的访问共享资源,如读写锁). 在JDK1.5之前,Java是通过sync ...

  8. 第10组 Alpha冲刺(3/6)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 对推送模块进行详细划分 基于用户的协同过滤,寻找更感兴趣的话题 学习API文档 ...

  9. ActiveMq 本地安装及启动(Windows)

    首先下载MQ的安装包 http://activemq.apache.org/download.html 1.点击最新版本的ActiveMQ的 2.这里有窗户版本和Linux的的版本,这里我们选择窗口版 ...

  10. android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)

    Android开发项目时常常会遇到定位这个功能, 很久以前写过一篇了,官方也更新了一些东西,我也更新下 以前使用的是jar包 导入来实现高德定位 老版本 链接:https://www.cnblogs. ...