一起来学演化计算-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. 什么情况下使用large training data会非常有效

    收集大量的数据可能比算法的优劣更重要 Banko和Brill在2001年做了一个研究,是关于在句子中对易混单词进行识别,画出了上图的右边的那个图,这个图显示了对于不同的算法,它们的表现相似,但是随着t ...

  2. bzoj 4128: Matrix ——BSGS&&矩阵快速幂&&哈希

    题目 给定矩阵A, B和模数p,求最小的正整数x满足 A^x = B(mod p). 分析 与整数的离散对数类似,只不过普通乘法换乘了矩阵乘法. 由于矩阵的求逆麻烦,使用 $A^{km-t} = B( ...

  3. CSS3中的display:grid网格布局介绍

    1.网格布局(grid): 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局; 2.基本概念: 容器和项目,如图所示: <div class="content&qu ...

  4. 讲心情 demo1

    讲道理找了一个安心而又稳定的工作. 每天活闲的蛋疼, 这种对于老年人来说可能会很好,但是,对于一个24岁的人可能就是坟墓了. 么事呻吟一下.   爬虫这条路越来越远了. 写下今年计划吧..机器学习入下 ...

  5. H3CNE学习4 命令行简介

    一.命令 1.简单命令 2.给路由器接口配置IP地址 3.常用命令 4.删除配置

  6. easyui181版本使用记录

    easyui181版本下载地址 简单java+easyui181版本demo下载 注意前端页面的ajax请求路径对应后端 如果再加强样式可使用adminLTE

  7. matlab 万能实用的非线性曲线拟合方法

    ——转载网络 在科学计算和工程应用中,经常会遇到需要拟合一系列的离散数据,最近找了很多相关的文章方法,在这里进行总结一下其中最完整.几乎能解决所有离散参数非线性拟合的方法 第一步:得到散点数据 根据你 ...

  8. codevs1580单词游戏

    题目描述中说: 单词为at,k=8则新单词为ib 推移规则是:如果k为正数则下推,否则上推,当推移超越边界时回到另一端继续推移. 但在我做题时发现: 这个描述与数据所要求的是完全相反的!!!! 样例1 ...

  9. CF1097D 【Makoto and a Blackboard】

    我们考虑对于一个\(N\),他如果变成了他的约数\(x\),那又会变成一个子问题 我们定义\(F(n, k)\)为n操作k次的期望个数 那么我们有\(F(n, k) =\sum_{x|n} F(x, ...

  10. 17、stage划分算法原理及DAGScheduler源码分析

    一.stage划分算法原理 1.图解 二.DAGScheduler源码分析 1. ###org.apache.spark/SparkContext.scala // 调用SparkContext,之前 ...