【发布时间】:2011-12-24 02:33:55
【问题描述】:
我有一个长度为 n 的向量 y。 y(i) 是 1..m 中的整数。是否有更简单的方法将 y 转换为 n x m 逻辑矩阵 yy,如果 y(i) = j 则 yy(i, j) = 1,否则为 0?以下是我的做法:
% If m is known (m = 3 here), you could write it out all at once
yy = [y == 1; y== 2; y == 3];
yy = reshape(yy, n, 3);
或
% if m is not known ahead of time
yy = [ y == 1 ];
for i = 2:m;
yy = [ yy; y == i ];
end
yy = reshape(yy, n, m);
【问题讨论】:
-
我找到了另一种方法...不确定这是否更好...但至少它适合一行:yy = repmat(y,1,m) == repmat(1: m, n, 1);
-
bsxfun是多线程 Matlab 函数之一。因此,它可能比您的解决方案更快。