muszę wektorować następujący kod:Porównaj dwa wektory nierównych długościach, aby uzyskać logiczną tablicę
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
Wyjście R powinno być logicznym tablica:
1 0 0
0 1 0
0 0 1
0 1 0
0 0 1
1 0 0
Najbliżej mogę dostać jest:
for j = 1:length(b)
r(:, j) = (a == b(j));
end
Iterowanie przez krótszy wektor jest oczywiście bardziej wydajne, ponieważ generuje mniej dla ite racje żywnościowe. Prawidłowe rozwiązanie nie powinno mieć żadnych pętli for.
Czy to możliwe w MATLAB/Octave?