je dois vectoriser le code suivant:Comparer deux vecteurs de longueurs inégales pour obtenir un tableau logique
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 sortie r doit être un tableau logique:
1 0 0
0 1 0
0 0 1
0 1 0
0 0 1
1 0 0
Le plus proche que je peux obtenir est:
for j = 1:length(b)
r(:, j) = (a == b(j));
end
L'itération à travers le vecteur le plus court est évidemment plus efficace car elle génère moins pour ite rations. La bonne solution ne devrait pas avoir de boucles for-loops.
Est-ce possible dans MATLAB/Octave?