Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

decrease the time of calculating

1 visualización (últimos 30 días)
fatema saba
fatema saba el 4 de Nov. de 2015
Cerrada: MATLAB Answer Bot el 20 de Ag. de 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.

Respuestas (1)

Jan
Jan el 4 de Nov. de 2015
Editada: Jan el 4 de Nov. de 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));

La pregunta está cerrada.

Etiquetas

Aún no se han introducido etiquetas.

Community Treasure Hunt

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

Start Hunting!

Translated by