# How do I decrease the time taken by these two for loops. I am taking 30 seconds approximately to run this, and this is in a big for loop that runs for 10000 times.

1 view (last 30 days)
Jay Vaidya on 28 Nov 2019
Answered: Jay Vaidya on 28 Nov 2019
Could anyone please help me with this? I am new to using MATLAB so I have written the code in a layman fashion and I am sure that there are ways to write it better.
The code is below (takes about 30 seconds, depending on size of both the matrices)
for i = 1:1:size(binary_probability_matrix,1)
for j = 1:1:size(matrix,1)
if matrix(j,1:2) == binary_probability_matrix(i,1:2)
matrix(j,3:4) = binary_probability_matrix(i,3:4);
elseif matrix(j,1) == binary_probability_matrix(i,2) && matrix(j,2) == binary_probability_matrix(i,1)
matrix(j,3:4) = binary_probability_matrix(i,3:4);
end
end
end
Basically I am comparing the first two columns of matrix and binary_probability_matrix. If the 1st 2 columns in the matrix are 4 3 ..then I search in the first two columns of binary_probability_matrix for 4 3 OR 3 4.
Similarly, when I am searching for 10 18, I search the first two columns of the binary_probability_matrix for finding 10 18 OR 18 10.
I hope that I was clear in mentioning my question. Please help me with this as the execution time is quite large.
EDIT: order of matrix is 5000x4 and the order of binary_probability_matrix is 2500x7,
Thank you
Jay
##### 2 CommentsShowHide 1 older comment
Jay Vaidya on 28 Nov 2019
Yes I have a big code which generates these 2 matrices.

Jay Vaidya on 28 Nov 2019
Thank you Stephen Cobeldick. I used ismember() function and that is excuting this in no time.
binary_probability_matrix(:,1:2) = sort(binary_probability_matrix(:,1:2),2);
A1 = matrix;
[X,Y] = ismember(matrix(:,[1,2]),binary_probability_matrix(:,[1,2]),'rows');
matrix(X,3:4) = binary_probability_matrix(Y(X),3:4 );
isequal(A1,matrix); %just to check if they are really matched.

### Categories

Find more on Matrix Indexing in Help Center and File Exchange

R2019b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by