Matlab convierte vector a matriz binaria [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Cree una matriz 2D llena de cero con unos en las posiciones indexadas por un vector 4 respuestasTengo un vector v de tamaño (m, 1) cuyos elementos son enteros seleccionados de 1: n. Quiero crear una matriz M de tamaño (m, n) cuyos elementos M (i, j) son 1 si v (i) = j, y son 0 de lo contrario. No quiero usar bucles, y me gustaría implementar esto solo como una simple manipulación de matriz de vectores.
Entonces pensé primero, crear una matriz con elementos repetidos
M = v * ones(1,n) % this is a (m,n) matrix of repeated v
Por ejemplo v = [1,1,3,2] 'm = 4 yn = 3
M =
1 1 1
1 1 1
3 3 3
2 2 2
entonces necesito crear un vector de comparación c de tamaño (1, n)
c = 1:n
1 2 3
Entonces necesito realizar una serie de comparaciones lógicas
M(1,:)==c % this results in [1,0,0]
.
M(4,:)==c % this results in [0,1,0]
Sin embargo, pensé que debería ser posible realizar los últimos pasos de pasar por cada fila individual en notación de matriz compacta, pero estoy perplejo y no estoy lo suficientemente informado sobre la indexación. El resultado final debe ser
M =
1 0 0
1 0 0
0 0 1
0 1 0