Info
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
decrease the time of calculating
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi I want to decrease the time of calculating in my algorithm. in this algorithm there is an objective function.in every iteration x is achieved from main loop of algorithm then it is entered to objective function in order to calculate the value of objective function. x is a matrix with 1000 rows and 1000 columns and 4 in third dimension. it is (0-1)matrix. also there is the other matrix (c). this matrix has the same rows, columns and third dimension with values between (1-256).this matrix is constant in every iteration.
this is my code:
z=sum(sum(sum(c.*x)))
the function is very simple but why it takes many times to calculate in every iteration.
0 Commenti
Risposte (1)
Jan
il 4 Nov 2015
Modificato: Jan
il 4 Nov 2015
Try:
L = (x == 1); % Convert it to a logical array outside the loops
...
z = sum(c(L))
To my surprise logical indexing was not implemented efficiently - at least in former Matlab versions. So you can give this a try: FEX: CopyMask
z = sum(CopyMask(c, L));
0 Commenti
Questa domanda è chiusa.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!