其实查看find的值,最主要记得一点是:find返回的是在矩阵中的索引值,而不是返回的是矩阵中的值。
~~~~~~~~~~~~~~~~~~~~~
用法1:ind=find(x)
找出矩阵x中的所有非零元素,并将这些元素的线性索引值(linear indices:按照列向排列)返回到向量ind中。
如果x是一个行向量,则ind是一个行向量;否则,ind是一个列向量
如果x不含非零元素或是一个空矩阵,则ind是一个空矩阵
例子:
X=[1 0 4 -3 0 0 0 8 6]
indices=find(X)
indices=
1 3 4 8 9
~~~~~~~~~~~~~~~~~~~~~~~~~~
用法2:ind=find(x,k)
用法3:ind=find(x,k,'first')
返回第一个非零元素k的索引值。
k必须是一个正数,但是它可以是任何数字数值类型。
用法4:ind=find(x,k,'last')
返回最后一个非零元素k的索引值。
用法5:[row,col]=find(x,...)
返回矩阵x中非零元素的行和列的索引值。
用法6:[row,col,v]=find(x,...)
返回x中非零元素的一个列或行向量v,同时返回行和列的索引值。
例子:
A= magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
[r,c,v]= find(A>10)
ans =
1 2 4 4 1 3 (按行)
ans =
1 2 2 3 4 4 (按列)
ans =
1 1 1 1 1 1
这里返回的向量v是一个逻辑矩阵,它包含N个非零元素,N=(A>10)
例子:
X = [1 0 4 -3 0 0 0 8 6];
find(X>2)
ans=3 8 9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X = [3 2 0; -5 0 7; 0 0 1];
[r,c,v] = find(X)
r =
1
2
1
2
3
c =
1
1
2
3
3
v =
3
-5
2
7
1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[r,c,v] = find(X>2)
r =
1
2
c =
1
3
v =
1
1
~~~~~~~~~~~~~~~~~~~~~~~~~~
x = [11 0 33 0 55]';
find(x == 0)
ans =
2
4
find(0 < x & x < 10*pi)
ans =
1
~~~~~~~~~~~~~~~~~~~~~~~~~
M = magic(3)
M =
8 1 6
3 5 7
4 9 2
find(M > 3,
4) %返回前四个M>3的索引值
ans =
1
3
5
6
~~~~~~~~~~~~~~~~~~~~~~~~
如果X是一个全零向量,find(X)返回一个空矩阵。
例如indices = find([0;0;0])
indices =
Empty matrix: 0-by-1
~~~~~~~~~~~~~~~~~~~~~~~~