2017-09-23 67 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