tôi cần phải vectorize đoạn mã sau:Hãy so sánh hai vectơ có độ dài bất bình đẳng để có được một mảng logic
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
Sản lượng r phải là một mảng logic:
1 0 0
0 1 0
0 0 1
0 1 0
0 0 1
1 0 0
Gần nhất tôi có thể nhận được là:
for j = 1:length(b)
r(:, j) = (a == b(j));
end
Lặp lại qua vector ngắn hơn rõ ràng là hiệu quả hơn vì nó tạo ra ít hiệu quả hơn cho ite khẩu phần ăn. Giải pháp chính xác không nên có cho vòng lặp nào.
Điều này có thể thực hiện được trong MATLAB/Octave không?