Что мне нужно сделать, учитывая вектор меток (числа от 1 до k), постройте матрицу Y
так, чтобы каждый столбец был булевым вектором, представляющим, каждая ли метка в Y
соответствует индексу этой колонки.Векторизованная версия следующего цикла в Matlab
Например, если labels = [1 2 3 4]
тогда Y
будет:
[ [ 1 0 0 0]
[ 0 1 0 0]
[ 0 0 1 0]
[ 0 0 0 1] ]
Пока мой код это:
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
Это своего рода работает, но это может быть очень медленным, когда num_classes
или num_samples
очень большой. Есть ли способ векторизовать это?
Какую версию MATLAB вы используете? – beaker
Matlab версия 2015a –