给定矩阵A
,我需要找到相应的值是1和2。我能做到这一点依次指标如下:如何矢量化矩阵子集,使find()返回一个矩阵?
>> 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
但是,如果我在一个循环中做这样的操作,MATLAB会只使用我的处理器的一个核心。我如何进行矢量化,以便从find
获得矩阵?我想这样的结果:
>> my_find(B, [1 2])
ans =
1 5
6 0
12 0
(或其他填充)
我怎样才能获得呢?
你如何灵活与您的数据格式?如果一个单元格阵列没问题,你可以尝试arrayfun(@(x)find(B == x),[1 2],'UniformOutput',false) – mars
@mars谢谢!我想我可以弄清楚如何从那里获得矩阵。 – Andreas
使用'find'不会让MATLAB使用更多的CPU核心 - [这里是一个列表](http://www.mathworks.se/support/solutions/en/data/1-4PG4AN/?solution=1-4PG4AN)可以从并行性中受益的内部函数。所以你不妨使用循环。 – angainor