Borrar filtros
Borrar filtros

Remove For Loops to Optimize Performance

2 visualizaciones (últimos 30 días)
Dinuk Amarasinghe
Dinuk Amarasinghe el 6 de Oct. de 2022
Respondida: Taru el 7 de Oct. de 2022
cvx_begin
y = 0;
n = 1000;
variables x;
minimize y;
parfor i = 1:n
y = -sum(log(1-x^2)) - sum(log(4 + rand(i)*x));
end
cvx_end
Need to remove for loops and write directly as vectors to speed up optimization algorithm.
  1 comentario
Torsten
Torsten el 6 de Oct. de 2022
rand(i) generates an (ixi) matrix of uniformly distributed random numbers on [0 1].
I doubt this is what you want.

Iniciar sesión para comentar.

Respuestas (1)

Taru
Taru el 7 de Oct. de 2022
Hi,
There seems to be a misunderstanding of the rand function as rand(i) gives a i*i square matrix of uniformly distributed random numbers between [0 1]. I understand that you might want it to generate n random numbers. So, you can just use rand(1,n) and vectorise it as:
y = -sum(log(1-x^2)) - sum(log(4 + rand(1,n)*x));
Without using any loop of sorts.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by