2014-10-31 68 views
0

我有一個矢量,其元素標識了我需要在不同矩陣中設置的索引(每列)。具體地講,我有:使用矢量元素設置矩陣的元素

A = 7 
    1 
    2 

和我需要與一些數量的零行的創建矩陣B,除了由A.識別換句話說元件,我想B:

B = zeros(10, 3); % number of rows is known; num columns = size(A) 
B(A(1), 1) = 1 
B(A(2), 2) = 1 
B(A(3), 3) = 1 

我想這樣做,而不必編寫一個循環。

任何指針,將不勝感激。

謝謝。

回答

0

使用linear indexing

B = zeros(10, 3); 
B(A(:).'+ (0:numel(A)-1)*size(B,1)) = 1; 

第二行可以與sub2ind等效書面(可能有點慢):

B(sub2ind(size(B), A(:).', 1:numel(A))) = 1; 
+0

謝謝工程。尾隨是什麼。「在表達式A(:)中做'。' ? – AIjunkie 2014-11-01 00:03:34

+0

這是一個轉置。 'A(:)。''只是'A',但要確保它是一個行向量 – 2014-11-01 00:13:08

+0

我明白了 - 我一直使用單引號作爲轉置運算符;並沒有真正看到任何人在一段時間內使用它,所以把我扔掉了。 – AIjunkie 2014-11-01 00:15:08