一起来学演化计算-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的非零元素
示例
找到矩阵中的零元素和非零元素
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
输入参数
输出参数
原文地址:https://www.cnblogs.com/cloud-ken/p/11262878.html
时间: 2024-10-09 05:30:39