Matlab конвертировать вектор в двоичную матрицу [дубликаты]
На этот вопрос уже есть ответ здесь:
Создайте заполненный нулями 2D массив с единицами в позициях, проиндексированных вектором 4 ответаУ меня есть вектор v размером (m, 1), элементы которого являются целыми числами, выбранными из 1: n. Я хочу создать матрицу M размера (m, n), элементы которой M (i, j) равны 1, если v (i) = j, и 0 в противном случае. Я не хочу использовать циклы и хотел бы реализовать это как простую манипуляцию векторной матрицей.
Поэтому я сначала подумал, чтобы создать матрицу с повторяющимися элементами
M = v * ones(1,n) % this is a (m,n) matrix of repeated v
Например, v = [1,1,3,2] 'm = 4 и n = 3
M =
1 1 1
1 1 1
3 3 3
2 2 2
тогда мне нужно создать вектор сравнения c размера (1, n)
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