0

我有以下循环可以满足我的需要:

> whos Y
  Name       Size               Bytes  Class     Attributes

   Y         10x5000            400000  double              

> whos y
   Name         Size            Bytes  Class     Attributes

   y         5000x1             40000  double              

Y = zeros(K,m);
for i=1:m
    Y(y(i),i)=1;
end

我想对其进行矢量化,但我尝试过但没有成功,例如

Y = zeros(K,m);
Y(y,:)=1;

这个想法是得到一个向量:

y = [9, 8, 7, .. etc]

并将其转换为:

Y = [[0 0 0 0 0 0 0 0 1 0]' [0 0 0 0 0 0 0 1 0 0]' [0 0 0 0 0 0 1 0 0 0]' ... etc]

这是我在多类 ANN 实现的上下文中需要的。

4

2 回答 2

1

您是否考虑过使用稀疏矩阵?

n=numel(y);
Y = sparse( y, 1:n, 1, n, n );

如果你真的必须有完整的矩阵,你可以打电话

Y = full(Y);
于 2013-08-06T21:10:23.200 回答
1

这是您可以使用的一种解决方案。这是您可以优化的起点

k = 10;
n = 20;
y = randi(k, 1, n);

columns = 1:n;
offsets = k*(columns-1);
indices = offsets + y;

Y = zeros(k, n);
Y(indices) = 1
于 2013-05-23T22:30:38.000 回答