necesito vectorizar el siguiente código:comparar dos vectores de longitudes desiguales para obtener una matriz lógica
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
La salida R debe ser una matriz lógica:
1 0 0
0 1 0
0 0 1
0 1 0
0 0 1
1 0 0
El más cercano que puedo conseguir es:
for j = 1:length(b)
r(:, j) = (a == b(j));
end
Iterar a través del vector más corto es obviamente más eficiente, ya que genera menos para ite raciones. La solución correcta no debería tener ningún bucle for.
¿Esto es posible en MATLAB/Octave?