Matlab Vektor in binäre Matrix konvertieren [duplizieren]

Diese Frage hat hier bereits eine Antwort:

rstellen Sie ein mit Nullen gefülltes 2D-Array mit Einsen an Positionen, die durch einen Vektor indiziert sin 4 Antworten

Ich habe einen Vektor v der Größe (m, 1), dessen Elemente ganze Zahlen sind, ausgewählt aus 1: n. Ich möchte eine Matrix M der Größe (m, n) erstellen, deren Elemente M (i, j) 1 sind, wenn v (i) = j, und andernfalls 0 sind. Ich möchte keine Schleifen verwenden und möchte dies nur als einfache Vektor-Matrix-Manipulation implementieren.

So dachte ich zuerst, eine Matrix mit wiederholten Elementen zu erstellen

 M = v * ones(1,n) % this is a (m,n) matrix of repeated v

Zum Beispiel v = [1,1,3,2] 'm = 4 und n = 3

M =
     1     1     1
     1     1     1
     3     3     3
     2     2     2

dann muss ich einen Vergleichsvektor c der Größe (1, n) erstellen

c = 1:n
1 2 3

Dann muss ich eine Reihe logischer Vergleiche durchführen

M(1,:)==c % this results in [1,0,0]
.
M(4,:)==c % this results in [0,1,0]

Ich dachte jedoch, dass es möglich sein sollte, die letzten Schritte zum Durchlaufen jeder einzelnen Zeile in kompakter Matrixnotation durchzuführen, aber ich bin ratlos und kenne mich nicht mit der Indizierung aus. Das Endergebnis sollte @ se

M =
     1     0     0
     1     0     0
     0     0     1
     0     1     0

Antworten auf die Frage(6)

Ihre Antwort auf die Frage