У меня есть вектор v размера (m, 1), элементы которого являются целыми числами, выбранными из 1: n. Я хочу создать матрицу M размера (m, n), элементы которой M (i, j) равны 1, если v (i) = j, и в противном случае равны нулю. Я не хочу использовать циклы и хотел бы реализовать это как простое манипулирование векторной матрицей.Matlab Convert Vector to Binary Matrix
Так что я подумал первым, чтобы создать матрицу с повторяющимися элементами
M = v * ones(1,n) % this is a (m,n) matrix of repeated v
Для примера V = [1,1,3,2]» т = 4 и п = 3
M =
1 1 1
1 1 1
3 3 3
2 2 2
затем нужно создать сравнение вектор с размером (1, п)
c = 1:n
1 2 3
Тогда мне нужно выполнить серию логического ком Пульки
M(1,:)==c % this results in [1,0,0]
.
M(4,:)==c % this results in [0,1,0]
Однако, я думал, что это должно быть возможно выполнить последние шаги прохождения каждой отдельной строки в компактной матричной записи, но я в тупике и не достаточно хорошо осведомлен об индексации. Конечный результат должен быть
M =
1 0 0
1 0 0
0 0 1
0 1 0
oh shoot Я писал этот точный ответ, ха-ха, я определенно набираю слишком медленно! –
Хорошее объяснение! –
@ Benoit_11 - lol sorry :) – rayryeng