找到
查找非零元素的索引和值
描述
例子
矩阵中的零和非零元素
找出3 × 3矩阵中的非零元素。
X = [1 0 2;0 1 1;0 0 4]
X =3×31 0 2 0 1 1 0 0 4
k = find(X)
k =5×11 5 7 8 9
使用逻辑不
操作员在X
来定位零。
k2 = find(~X)
k2 =4×12 3 4 6
满足条件的元素
找出4 × 4魔法方阵中小于10的前5个元素。
X =魔术(4)
X =4×416 2 3 13 5 11 10 8 9 7 6 12 4 14 15
k = find(X<10,5)
k =5×12 3 4 5 7
的对应元素X
.
X (k)
ans =5×15 9 4 2 7
元素等于特定值
若要查找特定的整数值,请使用= =
操作符。例如,找到等于的元素13
在一个1 × 10的奇数向量中。
X = 1:2:20
x =1×1013 5 7 9 11 13 15 17 19
K = find(x==13)
K = 7
若要查找非整数值,请使用基于数据的容差值。否则,由于浮点舍入错误,结果有时是一个空矩阵。
Y = 0:0.1:1
y =1×110 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空双行向量
K = find(abs(y-0.3) < 0.001)
K = 4
最后几个非零元素
创建一个6乘6的神奇方阵,其中所有奇数索引元素都等于零。
X =魔术(6);X(1:2:end) = 0
X =6×60 0 0 0 0 3 32 7 21 23 25 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,“最后一次”)
k =4×130 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 =4×418 3 1 11 8 10 11 3 9 14 6 14 3 15 21
[row,col] = find(X>0 & X<10,3)
行=3×12 3 4
坳=3×11 1 1
第一个例子是X (2, 1)
,即8
.
非零元素的下标和值
找出3 × 3矩阵中的非零元素。指定三个输出以返回行下标、列下标和元素值。
X = [3 2 0;-5 0 7;0 0 1]
X =3×33 2 0 -5 0 7 0 0 1
[row,col,v] = find(X)
行=5×11 2 1 2 3
坳=5×11 1 2 3 3
v =5×13 -5 2 7
多维数组的下标
找出4 × 2 × 3数组中的非零元素。指定两个输出,行
和上校
,返回非零元素的行下标和列下标。当输入是多维数组时(N > 2
),找到
返回上校
作为一个线性下标n - 1
拖尾尺寸X
.
X = 0 (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 0 1 X(:,:,3) = 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0
[row,col] = find(X)
行=4×11 4 3 1
坳=4×11 3 5 6
输入参数
X
- - - - - -输入数组
标量|向量|矩阵|多维数组
输入数组,指定为标量、向量、矩阵或多维数组。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|逻辑
|字符
复数支持:金宝app是的
n
- - - - - -非零的个数
正整数标量
要查找的非零数,指定为正整数标量。默认情况下,找到(X, n)
寻找第一个n
中非零元素X
.
方向
- - - - - -搜索方向
“第一”
(默认)|“最后一次”
搜索方向,指定为字符串“第一”
或“最后一次”
.寻找最后的n
中非零元素X
使用找到(X, n,“最后”)
.
输出参数
k
-指向非零元素的索引
向量
指向非零元素的索引,作为向量返回。
如果
X
是行向量吗k
也是行向量。否则,k
是一个列向量。k
什么时候是空行向量还是空列向量X
为空数组或没有非零元素。找到
使用约定k
是一个空矩阵[]
当X
是一个空矩阵[]
.
中返回非零值X
使用X (k)
.
行
-行下标
向量
行下标,作为一个向量返回。在一起,行
和上校
指定坳X(行)
中的非零元素对应的下标X
.
上校
-列下标
向量
列下标,作为一个向量返回。在一起,行
和上校
指定坳X(行)
中的非零元素对应的下标X
.
如果X
多维数组与N > 2
,然后上校
它是线性下标吗n - 1
拖尾尺寸X
.这样就保留了关系X(row(i),col(i)) == v(i)
.
v
的非零元素X
向量
的非零元素X
,作为一个向量返回。
更多关于
线性指数
线性索引允许使用单个下标对数组进行索引,例如(k)
.MATLAB®将数组视为单个列向量,其中每一列都附加到前一列的底部。因此,线性索引从上到下、从左到右对列中的元素进行编号。
例如,考虑一个3 × 3矩阵。你可以参考(2, 2)
元素(5)
,以及(2、3)
元素(8)
.线性下标的变化取决于数组的大小;(5)
为3 × 3矩阵返回与4 × 4矩阵不同位置的元素。
的sub2ind
和ind2sub
函数在下标和线性下标之间转换时很有用。
提示
若要查找满足条件的数组元素,请使用
找到
与关系表达式结合使用。例如,找到(X < 5)
返回元素的线性下标X
小于5
.直接找到其中的元素
X
满足条件X < 5
,使用X (X < 5)
.避免像这样调用函数(找到(X < 5))
,不必要地使用找到
在逻辑矩阵上。当你执行时
找到
使用关系操作X > 1
,重要的是要记住关系操作的结果是一个由1和0组成的逻辑矩阵。例如,命令[row,col,v] = find(X>1)
返回逻辑的列向量1
(真正的
)值v
.行和列下标,
行
和上校
的线性指标k
通过k = sub2ind(size(X),row,col)
.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
如果变量大小的输入在运行时变成行向量,那么代码生成将以错误结束。当输入是标量或变长行向量时,此限制不适用。
对于可变大小的输入,空输出(0-by-0、0-by-1或1-by-0)的形状取决于输入大小的上界。当输入数组在运行时是标量或[]时,输出可能与MATLAB不匹配。如果输入是一个变长的行向量,那么空输出的大小是1乘0。否则,大小为0 × 1。
生成的代码总是返回一个变长向量。即使你提供输出向量
k
时,输出不是固定大小的,因为输出可以包含小于k
元素。例如,找到(x, 1)
返回具有一个或零个元素的变长向量。
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
本功能完全支持GPU阵列。金宝app有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存对大型数组进行分区。
该函数完全支持分布式数组。金宝app有关更多信息,请参见运行MATLAB函数与分布式阵列(并行计算工具箱).
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。