Создайте заполненный нулями 2D массив с единицами в позициях, проиндексированных вектором
Я пытаюсь векторизовать следующую операцию MATLAB:
Учитывая вектор столбца с индексами, я хочу матрицу с тем же числом строк столбца и фиксированным числом столбцов. Матрица инициализируется нулями и содержит единицы в местах, указанных индексами.
Вот пример сценария, который я уже написал:
y = [1; 3; 2; 1; 3];
m = size(y, 1);
% For loop
yvec = zeros(m, 3);
for i=1:m
yvec(i, y(i)) = 1;
end
Желаемый результат:
yvec =
1 0 0
0 0 1
0 1 0
1 0 0
0 0 1
Можно ли добиться того же результата без цикла for? Я попробовал что-то вроде этого:
% Vectorization (?)
yvec2 = zeros(m, 3);
yvec2(:, y(:)) = 1;
но это не работает