Vector Matlab Converter em matriz binária [duplicado]
Esta pergunta já tem uma resposta aqui:
Crie uma matriz 2D preenchida com zero com as em posições indexadas por um vetor 4 respostasEu tenho um vetor v de tamanho (m, 1) cujos elementos são números inteiros selecionados de 1: n. Eu quero criar uma matriz M de tamanho (m, n) cujos elementos M (i, j) sejam 1 se v (i) = j e 0, caso contrário. Eu não quero usar loops e gostaria de implementar isso como uma simples manipulação de matriz de vetores.
Então pensei primeiro em criar uma matriz com elementos repetidos
M = v * ones(1,n) % this is a (m,n) matrix of repeated v
Por exemplo v = [1,1,3,2] 'm = 4 en = 3
M =
1 1 1
1 1 1
3 3 3
2 2 2
então eu preciso criar um vetor de comparação c de tamanho (1, n)
c = 1:n
1 2 3
Então eu preciso realizar uma série de comparações lógicas
M(1,:)==c % this results in [1,0,0]
.
M(4,:)==c % this results in [0,1,0]
No entanto, achei que deveria ser possível executar as últimas etapas de cada linha em notação matricial compacta, mas estou perplexo e não tenho conhecimento suficiente sobre indexação. O resultado final deve ser
M =
1 0 0
1 0 0
0 0 1
0 1 0