Мне нужно векторизовать следующий код:
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?