matlab中find 查找非零元素的索引和值
来源:https://ww2.mathworks.cn/help/matlab/ref/find.html?searchHighlight=find&s_tid=doc_srchtitle
find
查找非零元素的索引和值
说明
示例
矩阵中的零和非零元素
在 3×3 矩阵中查找非零元素。
X = [1 0 2; 0 1 1; 0 0 4]
X = 3×3
1 0 2
0 1 1
0 0 4
k = find(X)
k = 5×1
1
5
7
8
9
对 X 使用逻辑 not 运算符以查找零值。
k2 = find(~X)
k2 = 4×1
2
3
4
6
满足一个条件的元素
在 4×4 幻方矩阵中查找前五个小于 10 的元素。
X = magic(4)
X = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
k = find(X<10,5)
k = 5×1
2
3
4
5
7
查看 X 的对应元素。
X(k)
ans = 5×1
5
9
4
2
7
等于特定值的元素
要查找特定的整数值,请使用 == 运算符。例如,在 1×10 的奇整数向量中查找等于 13 的元素。
x = 1:2:20
x = 1×10
1 3 5 7 9 11 13 15 17 19
k = find(x==13)
k = 7
要查找非整数值,请基于您的数据使用容差值。否则,由于浮点舍入误差有时会生成空矩阵。
y = 0:0.1:1
y = 1×11
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
k = find(y==0.3)
k = 1x0 empty double row vector
k = find(abs(y-0.3) < 0.001)
k = 4
最后几个非零元素
创建一个由等于零的所有奇数索引元素组成的 6×6 幻方矩阵。
X = magic(6);
X(1:2:end) = 0
X = 6×6
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 = 4×1
30
32
34
36
满足多个条件的元素
在 4×4 矩阵中查找前 3 个大于 0 且小于 10 的元素。指定两个输出以便将行和列下标返回到这些元素。
X = [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21]
X = 4×4
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 = 3×1
2
3
4
col = 3×1
1
1
1
第一个实例是 X(2,1),即 8。
非零元素的下标和值
在 3×3 矩阵中查找非零元素。指定三个输出以返回行下标、列下标和元素值。
X = [3 2 0; -5 0 7; 0 0 1]
X = 3×3
3 2 0
-5 0 7
0 0 1
[row,col,v] = find(X)
row = 5×1
1
2
1
2
3
col = 5×1
1
1
2
3
3
v = 5×1
3
-5
2
7
1
多维数组的下标
在 4×2×3 数组中查找非零元素。指定两个输出 row 和 col 以返回非零元素的行和列下标。如果输入是多维数组 (N > 2),find 返回 col 作为 X 的 N-1 个尾部维度的线性索引。
X = zeros(4,2,3);
X([1 12 19 21]) = 1
X =
X(:,:,1) = 1 0
0 0
0 0
0 0 X(:,:,2) = 0 0
0 0
0 0
1 0 X(:,:,3) = 0 1
0 0
1 0
0 0
[row,col] = find(X)
row = 4×1
1
4
3
1
col = 4×1
1
3
5
6
输入参数
X - 输入数组
标量 | 向量 | 矩阵 | 多维数组
输入数组,指定为标量、向量、矩阵或多维数组。如果 X 为空数组或不含非零元素,则 k 为空数组。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
复数支持: 是
n - 要查找的非零元素数量
正整数标量
要查找的非零元素数量,指定为正整数标量。默认情况下,find(X,n) 查找 X 中的前 n 个非零元素。
direction - 搜索方向
'first' (默认) | 'last'
搜索方向,指定为字符串 'first' 或 'last'。使用 find(X,n,'last') 在 X 中查找后 n 个非零元素。
输出参数
k - 指向非零元素的索引
向量
指向非零元素的索引,以向量的形式返回。如果 X 是行向量,则 k 也是行向量。否则 k 是列向量。X 是空数组或不含非零元素时,k 为空数组。
可以使用 X(k) 返回 X 中的非零值。
row - 行下标
向量
行下标,以向量的形式返回。row 和 col 一起指定与 X 中的非零元素对应的 X(row,col) 下标。
col - 列下标
向量
列下标,以向量的形式返回。row 和 col 一起指定与 X 中的非零元素对应的 X(row,col) 下标。
如果 X 是多维数组且 N> 2,则 col 是 X 的 N-1 尾部维度的线性索引。这会保留关系 X(row(i),col(i)) == v(i)。
v - X 的非零元素
向量
X 的非零元素,以向量的形式返回。
详细信息
线性索引
线性索引允许使用单个下标创建指向数组的索引,例如A(k)。MATLAB 将该数组视为单列向量,其中每一列附加到前一列的底部。因此,线性索引从上到下、从左到右对列中的元素编号。
例如,假设一个 3×3 矩阵。您可以用 A(5) 来引用 A(2,2) 元素,用 A(8) 来引用 A(2,3) 元素。线性索引根据数组大小而改变;A(5) 会为 3×3 矩阵和 4×4 矩阵返回不同位置上的元素。
sub2ind 和 ind2sub 函数对于在下标和线性索引之间进行转换非常有用。
提示
要查找符合条件的数组元素,请结合使用
find和关系表达式。例如,find(X<5)返回X中小于5的元素的线性索引。要直接查找
X中满足条件X<5的元素,请使用X(X<5)。尽量避免使用X(find(X<5))之类的函数调用,因为这种调用中对逻辑矩阵使用的find完全没有必要。将
find与X>1之类的关系运算结合在一起执行时,必须记住关系运算的结果是由 1 和 0 组成的逻辑矩阵。例如,命令[row,col,v] = find(X>1)会返回由v的逻辑值1(true) 组成的列向量。行下标和列下标,即
row和col与k×k = sub2ind(size(X),row,col)中的线性索引相关。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
C/C++ 代码生成
使用 MATLAB Coder 生成 C 代码和 C++ 代码。
用法说明和限制:
如果可变大小输入在运行时变为行向量,代码生成将结束并报告错误。当输入为标量或可变长度行向量时,此限制不适用。
对于可变大小输入,空输出(0×0、0×1 或 1×0)的形状取决于输入大小的上限。当输入数组在运行时为标量或 [] 时,输出可能与 MATLAB 不匹配。如果输入为可变长度行向量,则空输出的大小为 1×0。否则,大小为 0×1。
生成的代码始终返回可变长度向量。即使您提供输出向量
k,输出也不是固定大小,因为输出可以包含少于k个元素。例如,find(x,1)返回具有一个或零个元素的可变长度向量。
GPU 数组
通过使用 Parallel Computing Toolbox 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox 在群集的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
在 R2006a 之前推出
matlab中find 查找非零元素的索引和值的更多相关文章
- MATLAB中求矩阵非零元的坐标
MATLAB中求矩阵非零元的坐标: 方法1: index=find(a); [i,j]=ind2sub(size(a),index); disp([i,j]) 方法2: [i,j]=find(a> ...
- Matlab中K-means聚类算法的使用(K-均值聚类)
K-means聚类算法采用的是将N*P的矩阵X划分为K个类,使得类内对象之间的距离最大,而类之间的距离最小. 使用方法:Idx=Kmeans(X,K)[Idx,C]=Kmeans(X,K) [Idx, ...
- matlab中fminbnd函数求最小或者组大值
clc; clear all; close all; fx = @(x) -(0.4./sqrt(1 + x.^2) - sqrt(1+x.^2) .* (1- 0.4./(1 + x.^2))+x) ...
- matlab中find函数的使用说明
matlab中如何统计一个矩阵M中零的个数 size(find(M==0),1) 原文:http://blog.sina.com.cn/s/blog_707b64550100rbh3.html fin ...
- matlab 中 find() 函数用法
一. 功能: 寻找非零元素的索引和值 二.相关函数语法: ind = find(X) ind = find(X, k) ind = find(X, k, 'first') ind = find(X, ...
- matlab中矩阵的表示与简单操作
原文地址为:matlab矩阵的表示和简单操作 一.矩阵的表示在MATLAB中创建矩阵有以下规则: a.矩阵元素必须在”[ ]”内: b.矩阵的同行元素之间用空格(或”,”)隔开: c.矩阵的行与行之间 ...
- matlab中 assert(any(mask(:)));
首先,matlab中any函数:检测矩阵mask中是否有非零元素,如果有,返回1,:如果没有非零元素,即所有元素都是0,那么则返回0. assert()是一个调试程序时经常使用的宏,在程序运行时它计算 ...
- 学习笔记(1)---matlab中常见函数解析
一.fscanf函数 matlab中函数fscanf在文件读取方面的实例如下: 从文件中有格式地读数据 fscanf 语法1:[a,count]=fscanf(fid,format,size) 根据指 ...
- matlab中imfinfo 有关图形文件的信息
来源:https://ww2.mathworks.cn/help/matlab/ref/imfinfo.html?searchHighlight=imfinfo&s_tid=doc_srcht ...
随机推荐
- 基于Log4Net记录日志到SQLServer(自定义字段)
本文记录通过log4net将日志信息记录到SQLServer数据库中. 1.新建控制台应用程序 Log4NetDemo: 2.通过NuGet安装Log4Net (项目版本2.0.8): 3.项目根目录 ...
- 蒲公英 · JELLY技术周刊 Vol.20: Vue3 极致优化——分析 Vue3 Compiler 告诉你为什么这么快
蒲公英 · JELLY技术周刊 Vol.20 性能优化是一条无尽的路,我们总是可以找到各种途径去提升体验,不论是响应时间还是按需加载,亦或是根据框架或者组件有针对性的优化都会是不错的方法.如果你在使用 ...
- Android Studio相关目录
Android Studio的Android SDK的安装路径 /Users/XXX/Library/Android/sdk/ nox_adb.exe connect 127.0.0.1:62001 ...
- 尝试MatCap类型shader
听说MatCap能在低端机上做出很漂亮的pbr效果,就尝试了一下. MatCap全称MaterailCapture,里面存的是光照信息,通过法线的xy分量去采样matcap,得到在该方向法线的光照信息 ...
- AOP理论
目录 AOP理论 什么是AOP 那Spring AOP,AspectJ又是啥呢? 为什么说AOP是OOP的补充和完善呢? 应用场景举例 AOP的优点 AOP的术语整理 AOP理论 什么是AOP AOP ...
- P2414 [NOI2011]阿狸的打字机 AC自动机
题意 给定n个模式串,有m个询问,每次询问第X个模式串在第Y个模中出现了多少次 解题思路 以fail树相反的方向建一棵树T,问题转化为X的子树中有多少个y的终止节点.跑出T的dfs序,X的子树就可以表 ...
- Mybatis源码学习第六天(核心流程分析)之Executor分析
今Executor这个类,Mybatis虽然表面是SqlSession做的增删改查,其实底层统一调用的是Executor这个接口 在这里贴一下Mybatis查询体系结构图 Executor组件分析 E ...
- SpringBoot favicon.ico网站图标
1.在application.properties下添加spring.mvc.favicon.enabled=false 默认true开启 2.关闭后,需要在src/main/resources/st ...
- about blog
前言 今天无意中发现了一个小姐姐自己设计的的博客,感觉非常的nice,就随手copy一下,完了感觉效果还蛮好的 end 附上小姐姐的博客以及教程
- Kafka入门(4):深入消费者
摘要 在这一篇文章中,我将向你介绍消费者的一些参数. 这些参数影响了每次poll()请求的数据量,以及等待时间. 在这之后,我将向你介绍Kafka用来保证消费者扩展性以及可用性的设计--消费者组. 在 ...