k = find(X)
k = find(X,n)
k = find(X,n,direction)
[row,col]= find(___)
[row,col,v]= find(___)
在 3×3 矩陣中查找非零元素。
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
對(duì) X
使用邏輯 not
運(yùn)算符以查找零值。
k2 = find(~X)
k2 = 2 3 4 6
在 4×4 幻方矩陣中查找前五個(gè)小于 10 的元素。
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
的對(duì)應(yīng)元素。
X(k)
ans = 5 9 4 2 7
要查找特定的整數(shù)值,請(qǐng)使用 ==
運(yùn)算符。例如,在 1×10 的奇整數(shù)向量中查找等于 13
的元素。
x = 1:2:20
x = 1 3 5 7 9 11 13 15 17 19
k = find(x==13)
k = 7
要查找非整數(shù)值,請(qǐng)基于您的數(shù)據(jù)使用容差值。否則,由于浮點(diǎn)舍入誤差有時(shí)會(huì)生成空矩陣。
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 = 1x0 empty double row vector
k = find(abs(y-0.3) < 0.001)
k = 4
創(chuàng)建一個(gè)由等于零的所有奇數(shù)索引元素組成的 6×6 幻方矩陣。
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
查找后四個(gè)非零值。
k = find(X,4,'last')
k = 30 32 34 36
在 4×4 矩陣中查找前 3 個(gè)大于 0
且小于 10
的元素。指定兩個(gè)輸出以便將行和列下標(biāo)返回到這些元素。
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
第一個(gè)實(shí)例是 X(2,1)
,即 8
。
在 3×3 矩陣中查找非零元素。指定三個(gè)輸出以返回行下標(biāo)、列下標(biāo)和元素值。
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
在 4×2×3 數(shù)組中查找非零元素。指定兩個(gè)輸出 row
和 col
以返回非零元素的行和列下標(biāo)。如果輸入是多維數(shù)組 (N > 2
),find
返回 col
作為 X
的 N-1
個(gè)尾部維度的線性索引。
X = zeros(4,2,3);X([1 12 19 21]) = 1
X = X(:,:,1) = 1 0 0 0 0 0 0 0X(:,:,2) = 0 0 0 0 0 0 1 0X(:,:,3) = 0 1 0 0 1 0 0 0
[row,col] = find(X)
row = 1 4 3 1
col = 1 3 5 6
X
- 輸入數(shù)組輸入數(shù)組,指定為標(biāo)量、向量、矩陣或多維數(shù)組。如果 X
為空數(shù)組或不含非零元素,則 k
為空數(shù)組。
數(shù)據(jù)類型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
復(fù)數(shù)支持: 是
n
- 要查找的非零元素?cái)?shù)量要查找的非零元素?cái)?shù)量,指定為正整數(shù)標(biāo)量。默認(rèn)情況下,find(X,n)
查找 X
中的前 n
個(gè)非零元素。
direction
- 搜索方向'first'
(默認(rèn)) | 'last'
搜索方向,指定為字符串 'first'
或 'last'
。使用 find(X,n,'last')
在 X
中查找后 n
個(gè)非零元素。
k
- 指向非零元素的索引指向非零元素的索引,以向量的形式返回。如果 X
是行向量,則 k
也是行向量。否則 k
是列向量。X
是空數(shù)組或不含非零元素時(shí),k
為空數(shù)組。
可以使用 X(k)
返回 X
中的非零值。
row
- 行下標(biāo)行下標(biāo),以向量的形式返回。row
和 col
一起指定與 X
中的非零元素對(duì)應(yīng)的 X(row,col)
下標(biāo)。
col
- 列下標(biāo)列下標(biāo),以向量的形式返回。row
和 col
一起指定與 X
中的非零元素對(duì)應(yīng)的 X(row,col)
下標(biāo)。
如果 X
是多維數(shù)組且 N> 2
,則 col
是 X
的 N-1
尾部維度的線性索引。這會(huì)保留關(guān)系 X(row(i),col(i)) == v(i)
。
v
- X
的非零元素X
的非零元素,以向量的形式返回。
線性索引允許使用單個(gè)下標(biāo)創(chuàng)建指向數(shù)組的索引,例如A(k)
。MATLAB? 將該數(shù)組視為單列向量,其中每一列附加到前一列的底部。因此,線性索引從上到下、從左到右對(duì)列中的元素編號(hào)。
例如,假設(shè)一個(gè) 3×3 矩陣。您可以用 A(5)
來(lái)引用 A(2,2)
元素,用 A(8)
來(lái)引用 A(2,3)
元素。線性索引根據(jù)數(shù)組大小而改變;A(5)
會(huì)為 3×3 矩陣和 4×4 矩陣返回不同位置上的元素。
sub2ind
和 ind2sub
函數(shù)對(duì)于在下標(biāo)和線性索引之間進(jìn)行轉(zhuǎn)換非常有用。
要查找符合條件的數(shù)組元素,請(qǐng)結(jié)合使用 find
和關(guān)系表達(dá)式。例如,find(X<5)
返回 X
中小于 5
的元素的線性索引。
要直接查找 X
中滿足條件 X<5
的元素,請(qǐng)使用 X(X<5)
。盡量避免使用 X(find(X<5))
之類的函數(shù)調(diào)用,因?yàn)檫@種調(diào)用中對(duì)邏輯矩陣使用的 find
完全沒(méi)有必要。
將 find
與 X>1
之類的關(guān)系運(yùn)算結(jié)合在一起執(zhí)行時(shí),必須記住關(guān)系運(yùn)算的結(jié)果是由 1 和 0 組成的邏輯矩陣。例如,命令 [row,col,v] = find(X>1)
會(huì)返回由 v
的邏輯值 1
(true
) 組成的列向量。
行下標(biāo)和列下標(biāo),即 row
和 col
與 k
×k= sub2ind(size(X),row,col)
中的線性索引相關(guān)。
用法說(shuō)明和限制:
如果可變大小輸入在運(yùn)行時(shí)變?yōu)樾邢蛄?,代碼生成將結(jié)束并報(bào)告錯(cuò)誤。當(dāng)輸入為標(biāo)量或可變長(zhǎng)度行向量時(shí),此限制不適用。
對(duì)于可變大小輸入,空輸出(0×0、0×1 或 1×0)的形狀取決于輸入大小的上限。當(dāng)輸入數(shù)組在運(yùn)行時(shí)為標(biāo)量或 [] 時(shí),輸出可能與 MATLAB 不匹配。如果輸入為可變長(zhǎng)度行向量,則空輸出的大小為 1×0。否則,大小為 0×1。
生成的代碼始終返回可變長(zhǎng)度向量。即使您提供輸出向量 k
,輸出也不是固定大小,因?yàn)檩敵隹梢园儆?k
個(gè)元素。例如,find(x,1)
返回具有一個(gè)或零個(gè)元素的可變長(zhǎng)度向量。
聯(lián)系客服