Populate columns of matrix without for loop using input from a vector of intergers

4 vues (au cours des 30 derniers jours)
I am looking for a way to generate a target matrix for the neural network toolbox using labeled data where each class is represented in an vector of integers.
Example:
X =
[0
2
1
2
3]
I need this in the form
X = [ 1 0 0 0
0 0 1 0
0 1 0 0
0 0 1 0
0 0 0 1]
Is it possible to do this without a loop?
Thanks

Réponse acceptée

José-Luis
José-Luis le 7 Juil 2017
Modifié(e) : José-Luis le 7 Juil 2017
X=[0, 2, 1, 2, 3];
numCols = max(X) + 1;
result = zeros(numel(X),numCols);
idx = sub2ind(size(result),1:numel(X),X+1 );
result(idx) = 1
To go back:
[~, back_result] = find(result);
back_result = back_result - 1

Plus de réponses (1)

Greg Heath
Greg Heath le 7 Juil 2017
>> clear all
classindices = [1 3 5 4 2 ];
classmatrix = full(ind2vec(classindices))
classmatrix =
1 0 0 0 0
0 0 0 0 1
0 1 0 0 0
0 0 0 1 0
0 0 1 0 0
Hope this helps.
Greg

Catégories

En savoir plus sur Deep Learning Toolbox dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by