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 respuestas

Tengo 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

Respuestas a la pregunta(3)

Su respuesta a la pregunta