我有以下循环可以满足我的需求:
> 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实现的上下文中。
答案 0 :(得分: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
答案 1 :(得分:1)
您是否考虑过使用稀疏矩阵?
n=numel(y);
Y = sparse( y, 1:n, 1, n, n );
如果你真的必须有完整的矩阵,你可以打电话
Y = full(Y);