我有一个长度为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 ); – notrick
'bsxfun'是多线程的Matlab函数。因此它可能比您的解决方案更快。 – Jonas