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.
    6 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Jay Vaidya
      
 am 28 Nov. 2019
  
    
    
    
    
    Beantwortet: Jay Vaidya
      
 am 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 Kommentare
  Turlough Hughes
      
 am 28 Nov. 2019
				Do you have code to generate the matrices or can you upload the variables as a .mat.
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

