Reducing the computation time using a for loop
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Danielle Leblance
le 11 Oct 2016
Modifié(e) : Guillaume
le 11 Oct 2016
A is a matrix with a bigger size than the B matrix. B is a subset of A (except the last column that I am trying to fill A;s last column with the respective values of B's last column). I wrote the following loop that has been running for more than an hour although it should be simple. I hoe someone can help me to reduce the computation time:
for m=1:size(A,1)
for n=1:size(B,1)
x0a=A(:,2)==B(n,2) & A(:,1)==B(n,1);
if ~isempty(x0a)
A(m,end)=B(x0a,end);
end
end
end
0 commentaires
Réponse acceptée
Guillaume
le 11 Oct 2016
Modifié(e) : Guillaume
le 11 Oct 2016
[isinB, Brow] = ismember(A(:, [1 2]), B(:, [1 2]), 'rows');
A(isinB, end) = B(Brow(isinB), end);
edit: silly typo
2 commentaires
Guillaume
le 11 Oct 2016
You corrected my typo, but not correctly. The missing closing bracket was supposed to go at the end of B(:, [1 2]).
I've now fixed it in my answer.
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!