Info

This question is closed. Reopen it to edit or answer.

decrease the time of calculating

1 view (last 30 days)
fatema saba
fatema saba on 4 Nov 2015
Closed: MATLAB Answer Bot on 20 Aug 2021
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.

Answers (1)

Jan
Jan on 4 Nov 2015
Edited: Jan on 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));

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!