Was ich tun muss, ist, gegeben einen Vektor von Etiketten (Zahlen 1 bis k), konstruieren Sie eine Matrix Y
so dass jede Spalte ein boolescher Vektor darstellt, ob oder nicht jedes Etikett in Y
entspricht dem Index dieser Spalte.Vektorisierte Version der folgenden Schleife in Matlab
Zum Beispiel, wenn labels = [1 2 3 4]
dann Y
wäre:
[ [ 1 0 0 0]
[ 0 1 0 0]
[ 0 0 1 0]
[ 0 0 0 1] ]
Bisher ist mein Code dies:
num_classes = 10;
num_samples = 100;
labels = randi(num_classes, [num_samples, 1]); % Example
Y = zeros([num_samples, num_classes]);
for k = 1:num_classes
Y(:, k) = (y == k);
end
Dieser irgendwie funktioniert, aber es kann sehr langsam sein, wenn num_classes
oder num_samples
sehr groß. Gibt es eine Möglichkeit, dies zu vektorisieren?
Welche Version von MATLAB verwenden Sie? – beaker
Matlab Version 2015a –