Создайте заполненный нулями 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;

но это не работает

Ответы на вопрос(4)

Ваш ответ на вопрос