一、前言
matlab中,矩阵各个元素的索引是如何排布的,如下验证
>> a = [2 3 4 5;6 7 8 9;10 11 12 13;14 15 16 17]
a =
2 3 4 5
6 7 8 9
10 11 12 13
14 15 16 17
>> a(1)
ans =
2
>> a(4)
ans =
14
>> a(13)
ans =
5
>> a(16)
ans =
17
>>
%由此可见
%matlab中,矩阵索引排布如下
a =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
二、find功能
返回一个包含数组 X 中每个非零元素的线性索引向量。
①:如果 X 为向量,则 find 返回方向与X相同的向量。如果 X 为多维数组,则 find 返回由结果的线性索引组成的列向量。如果 X 包含非零元素或为空,则 find 返回一个空数组。
②:线性索引组成的列向量:表示索引按照列,从1开始,从第一列开始,下一列的第一个值的索引紧接上一列最后一个值的索引。
三、应用举例
①:行列向量
%行向量
>> a = [1 2 0 3];
>> find(a)
ans =
1 2 4
%列向量
>> find(a')
ans =
1
2
4
②:矩阵
>> a = [1 2 3;0 1 0;1 0 1]
a =
1 2 3
0 1 0
1 0 1
>> find(a)
ans =
1
3
4
5
7
9
③:find(X == n) 找出矩阵或者向量中和某个值相等的元素位置,
>> a = [1 2 3;0 1 0;1 0 1]
a =
1 2 3
0 1 0
1 0 1
>> find(a == 1)
ans =
1
3
5
9
>> find(a == 2)
ans =
4
>> find(a == 3)
ans =
7
>>
④、find(X == n,c),如果矩阵X中有多个元素和n相等,只取c个
>> a = [1 2 3;0 1 0;1 0 1]
a =
1 2 3
0 1 0
1 0 1
>> find(a == 1,1)
ans =
1
>> find(a == 1,2)
ans =
1
3
>> find(a == 1,3)
ans =
1
3
5
>>