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)
Show older comments
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 Comments
Turlough Hughes
on 28 Nov 2019
Do you have code to generate the matrices or can you upload the variables as a .mat.
Accepted Answer
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!