2014-10-18 173 views
0

在这里我得到了创建一个矩阵

A = [1, 2, 3]

B = [1, 0, 0, 1, 0, 1]

我想创建一个矩阵

C = [1, 0, 0, 2, 0, 3]

你可以看到B就像是一个掩码,B中的个数等于e的个数在A中发售。我想要的是将A中的元素排列到B1的地方。

任何没有循环的方法?

+2

>>'B(B == 1)= A'。 – Divakar 2014-10-18 18:04:21

回答

3

未经检验的,而应该是接近:

C = zeros(size(B)); 
C(logical(B)) = A; 

这依赖于logical indexing

+0

只想发布相同的解决方案,使用'C(find(B))= A;'但结果相同。 – Nemesis 2014-10-18 18:07:12

+1

@Nemesis'logical'可能比'find'更快# – 2014-10-18 19:08:13

+1

@LuisMendo虽然'== 1'比'logical()'快,但也许它是相反的,或者也许是相同的。 – Divakar 2014-10-18 19:48:53