J'ai un vecteur y de longueur n. y (i) est un nombre entier dans 1..m. Existe-t-il un moyen plus simple de convertir y en une matrice logique n x m yy, où yy (i, j) = 1 si y (i) = j, mais 0 sinon? Voici comment je l'ai fait:Convertir un vecteur en matrice logique?
% 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);
ou
% 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);
J'ai trouvé un autre moyen ... je ne sais pas si c'est mieux ... mais au moins ça correspond à une ligne: yy = repmat (y, 1, m) == repmat (1: m, n, 1) – notrick
'bsxfun' fait partie des fonctions Matlab multithread. Ainsi, il est susceptible d'être plus rapide que vos solutions. – Jonas