【MATLAB】find函数及其用法

一、k = find(X)

        返回一个包含数组 X 中每个非零元素的线性索引向量

        如果 X 为向量,则 find 返回方向与X相同的向量。如果 X 为多维数组,则 find 返回由结果的线性索引组成的列向量。如果 X 包含非零元素或为空,则 find 返回一个空数组。

        线性索引组成的列向量:表示索引按照列,从1开始,从第一列开始,下一列的第一个值的索引紧接上一列最后一个值的索引。

1、代码示例

X = [1 0 2;
     0 1 1; 
     0 0 4];
disp(X)

k = find(X);
disp(k)

2、结果展示

在这个例子中,X中全部值对应的索引是:

                                                        1     4     7

                                                        2     5     8

                                                        3     6     9

所以结果将返回,所有非0元素的索引。

【MATLAB】find函数及其用法_第1张图片

【MATLAB】find函数及其用法_第2张图片

 二、k = find(X == n)  (其中n为X向量中的数值)

        结果回返回 n 的全部索引。索引按照列,从1开始,从第一列开始,下一列的第一个值的索引紧接上一列最后一个值的索引。

1、代码示例

X = [ 0 1 2 3;
      1 2 3 4;
      2 3 4 4;
      4 4 5 6];

k = find(X==4);
disp(k)

2、结果展示

在这个例子中,X中全部值对应的索引是:

                                                        1     5     9      13

                                                        2     6     10    14

                                                        3     7     11    15

                                                        4     8     12    16

所以结果将返回,所有的 4 元素对应的索引。

【MATLAB】find函数及其用法_第3张图片

三、k = find (X, n)

1、代码示例

        返回与 X 中的非零元素对应的前 n 个索引。

X = magic(4);
disp(X);
# 生成一个n*n的矩阵,矩阵元素是由整数1到n^2组成的并且任何行任何列的和都相等
# 阶数n必须是大于等于3的标量

k = find(X<10,5);
disp(k);

2、结果展示

        结果应该返回小于10所对应的前五个的索引。

【MATLAB】find函数及其用法_第4张图片

四、k = find (X, n, direction)

        其中 direction 为 'last ',查找与 X 中的非零元素对应的最后 n 个索引。direction 的默认值为 'first',即查找与非零元素对应的前 n 个索引。

1、代码示例

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');   # 查找后四个非零值
disp(k);

2、结果展示

【MATLAB】find函数及其用法_第5张图片

你可能感兴趣的:(MATLAB,matlab,算法,开发语言)