2017-09-23 85 views
0

有一個矢量Ÿ看起來如下:最快的方式

[ 
    1 
    2 
    4 
] 

我打算把它改造下面的格式,只有0和1,其中,當前行的第j個元素將被設置爲1:

[ 
    1 0 0 0 
    0 1 0 0 
    0 0 0 1 
] 

我會在下面的非矢量化版本實現它,但在量​​化什麼是履行這一最有效的方式,以及版?謝謝!

yy = zeros(size(y, 1), num_labels); 
for i=1:size(y,1), 
    yy(i, y(i, 1)) = 1; 
end; 

回答

0

使用稀疏矩陣,也將節省大量的內存,並可以像在計算一個「正常」的矩陣中:

y = [1 2 4]; 
sparse (y, y, 1) 

給你

Compressed Column Sparse (rows = 4, cols = 4, nnz = 3 [19%]) 

    (1, 1) -> 1 
    (2, 2) -> 1 
    (4, 4) -> 1 

或者如果你真的想要一個完整的矩陣:

full (sparse (y, y, 1)) 
ans = 

    1 0 0 0 
    0 1 0 0 
    0 0 0 0 
    0 0 0 1 
+0

謝謝你的答案!但我想要的是(1,1) - > 1,(2,2) - > 2,(3,4) - > 4,所以你可以看到第一個索引是從1,2,3,.. ...,n,與y的值不完全相同。 – KAs