2014-10-18 211 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