How to make inline function using for loop?

4 visualizaciones (últimos 30 días)
Sajjad Malik
Sajjad Malik el 22 de Sept. de 2018
Comentada: Sajjad Malik el 23 de Sept. de 2018
I need to make following function using "function handle"....
x=[x(1),x(2),x(3),...…,x(N)]……..Let say N=50
for i=1:1:N
fun(i)=@(x) 2*a + b + 4*c*d + 6*e %a, b ,c , d and e are iterative variables
end
a=[x(1),x(6),x(11),x(16),x(21),x(26),....,x(46)]
b=[x(2),x(7),x(12),x(17),x(22),x(27),.....x(47)]
c=[x(3),x(8),x(13),x(18),x(23),x(28),.....x(48)]
d=[x(4),x(9),x(14),x(19),x(24),x(29),.....x(49)]
e=[x(5),x(10),x(15),x(20),x(25),x(30),.....x(50)]
How can I write function using for loop?
  2 comentarios
Walter Roberson
Walter Roberson el 22 de Sept. de 2018
Why are you storing the same calculated anonymous function N times?
Sajjad Malik
Sajjad Malik el 22 de Sept. de 2018
Ultimately I use this function in "fmincon".....as an objective function...I tried other methods but could not find success.

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 22 de Sept. de 2018
fun = cell(N, 1);
F = @(x) 2*x(1:5:N) + x(2:5:N) + 4*x(3:5:N).*x(4:5:N) + 6*x(5:5:N);
fun(:) = {F};
Now fun stores N copies of the same function handle, each of which implements
@(x) 2*a + b + 4*c*d + 6*e
where a, b, c, d, e are short-hand for
a=[x(1),x(6),x(11),x(16),x(21),x(26),....,x(46)]
b=[x(2),x(7),x(12),x(17),x(22),x(27),.....x(47)]
c=[x(3),x(8),x(13),x(18),x(23),x(28),.....x(48)]
d=[x(4),x(9),x(14),x(19),x(24),x(29),.....x(49)]
e=[x(5),x(10),x(15),x(20),x(25),x(30),.....x(50)]
Each of the function handles will return a vector of length 50/5 = 10.
  5 comentarios
Walter Roberson
Walter Roberson el 23 de Sept. de 2018
No. When your objective function returns a vector of results, then fmincon and most other minimizers are not appropriate. You would need something like gamultiobj() which tries to find pareto fronts.
Sajjad Malik
Sajjad Malik el 23 de Sept. de 2018
Thanks Walter

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by