Мне нужно векторизовать следующий код:
a = [1 2 3 2 3 1];
b = [1 2 3];
for i = 1:length(a)
for j = 1:length(b)
r(i, j) = (a(i) == b(j));
end
end
Выход r должен быть логическим массивом:
1 0 0
0 1 0
0 0 1
0 1 0
0 0 1
1 0 0
Ближайший, который я могу получить:
for j = 1:length(b)
r(:, j) = (a == b(j));
end
Итерация по более короткому вектору, очевидно, более эффективна, поскольку генерирует меньше для итераций.Правильное решение не должно иметь циклов for.
Возможно ли это в MATLAB / Octave?