一、 功能: 尋找非零元素的索引和值 二、相關函數語法: 1. ind = find(X) 2. ind = find(X, k) 3. ind = find(X, k, 'first') 4. ind = find(X, k, 'last') 5. [row,col] = find(X, ...) ...
一、 功能:
尋找非零元素的索引和值
二、相關函數語法:
ind = find(X)
ind = find(X, k)
ind = find(X, k, 'first')
ind = find(X, k, 'last')
[row,col] = find(X, ...)
[row,col,v] = find(X, ...)
三、說明:
index= find(X)
找出矩陣X中的所有非零元素,並將這些元素的線性索引值(linear indices:按列)返回到向量index中。
如果X是一個行向量,則index是一個行向量;否則,index是一個列向量。
如果X不含非零元素或是一個空矩陣,則index是一個空矩陣。
index = find(X, k) 或 3. index = find(X, k, 'first')
找到前K個不為0的線性索引值。k必須是一個正數,但是它可以是任何 數字數值類型。
index = find(X, k, 'last')
找到後k個不為零元素的線性索引值。
[row,col] = find(X, ...)
返回矩陣X中非零元素的行和列的索引值。這個語法對於處理稀疏矩陣 尤其有用。
如果X是一個N(N>2)維矩陣,col包括列的線性索引。
[row,col,v] = find(X, ...)
返回X中非零元素的一個列或行向量v,同時返回行和列的索引值。如果X是一個邏輯表示,則v是一個邏輯矩陣。輸出向量v包含通過評估X表示得到的邏輯矩陣的非零元素。
四、解釋
I.用法一:
b=find(a),a是一個矩陣,查詢非零元素的位置,如果X是一個行向量,則返回一個行向量;否則,返回一個列向量。如果X全是零元素或者是空數組,則返回一個空數組,例子如下所示,也可以用b=find(a>2),這句的意思是在a中找到比較2大的元素
a=[1 3;0 4]
b=find(a)
輸出
a =
1 3
0 4
b =
1
3
4
解釋一下為什麼會得到b的值
a(1)
ans =
1
a(2)
ans =
0
II.用法二:
b=find(a,2),找出a中最先出現的2個不為零的數,a是你所要找的矩陣,2參數是指數量所下
a=[1 3;0 4]
b=find(a,2)
輸出
a =
1 3
0 4
b =
1
3
III.用法三:
c=find(a,2,'first')用法和二基本一樣,如下
a=[1 3;0 4]
b=find(a,2,'first')
輸出
a =
1 3
0 4
b =
1
3
IV.用法四:
c=find(a,2,'last') 這句的意思是從最後一個非零元素起,找2個不為零的元素,如下
a=[1 3;0 4]
b=find(a,2,'last')
輸出
a =
1 3
0 4
b =
3
4
V.用法五:
[a1,a2]=find(a),找出a矩陣中非零元素所在行和列,並存在a1,a2中
a=[1 3;0 4]
[a1,a2]=find(a)
輸出
a =
1 3
0 4
a1 =
1
1
2
a2 =
1
2
2
VI.用法六:
[a1,a2,v]=find(a),找出矩陣中非零元素所在行和列,並存在a1,a2中,並將結果放在v中,如下所示,這個得到的v是a中第幾行第幾列的**非零**元素
a=[1 3;0 4]
[a1,a2,val]=find(a)
輸出
a =
1 3
0 4
a1 =
1
1
2
a2 =
1
2
2
val =
1
3
4
VII.用法七:
[a1,a2,val]=find(a>2),返回一個單位列向量,這裡不滿足a>2,如下所示
a=[1 3;0 4]
[a1,a2,val]=find(a>2)
a =
1 3
0 4
a1 =
1
2
a2 =
2
2
val =
2×1 logical 數組
1
1
val就是說矩陣中第1行第2列和第2行第2列的元素滿足X>2為真用1來表示。
註意一下VI與VII的區別
X = [4 2 0; -4 0 6; 0 0 2]
[a1,a2,val1]=find(X)
[a3,a4,val2]=find(X>2)
輸出
X =
4 2 0
-4 0 6
0 0 2
a1 =
1
2
1
2
3
a2 =
1
1
2
3
3
val1 =
4
-4
2
6
2
a3 =
1
2
a4 =
1
3
val2 =
2×1 logical 數組
1
1
*註意val1的值。