如何对矩阵子集进行向量化,使find()返回一个矩阵?

And*_*eas 1 matlab vectorization octave

给定一个矩阵A,我需要找到对应于值1和2的索引.我可以按如下顺序执行:

>> B

B =

     1     2     3
     4     1     6
     7     8     9
     4     5     1

>> find(B==1)

ans =

     1
     6
    12

>> find(B==2)

ans =

     5
Run Code Online (Sandbox Code Playgroud)

但是如果我在循环中进行这种操作,Matlab将只使用我的处理器的一个核心.我如何矢量化它,以便从中获取矩阵find?我想要这个结果:

>> my_find( B, [1 2] )

ans =

    1 5
    6 0
   12 0
Run Code Online (Sandbox Code Playgroud)

(或其他一些填充)

我怎么能得到这个?

Wil*_*ull 6

只是不要使用 find

B==1

ans =

 1     0     0
 0     1     0
 0     0     0
 0     0     1

B==2

ans =

 0     1     0
 0     0     0
 0     0     0
 0     0     0
Run Code Online (Sandbox Code Playgroud)

然后添加或逻辑或那些在一起.

(B==1) + (B==2)

ans =

 1     1     0
 0     1     0
 0     0     0
 0     0     1
Run Code Online (Sandbox Code Playgroud)

要么

(B==1) | (B==2)

ans =

 1     1     0
 0     1     0
 0     0     0
 0     0     1
Run Code Online (Sandbox Code Playgroud)