How to evaluate inline functions each variable at once?
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Lucas Carvalho
el 13 de Mayo de 2017
Comentada: Lucas Carvalho
el 15 de Mayo de 2017
Hello guys! Let's say I have two symbolic functions:
f1 = x1^2+x2;
f2 = x3^2;
When I transform both to inline functions, f1 will be dependent of x1 and x2 and f2 of x3. I have a vector where I store the values for x1,x2,x3. How can I use the inline function with the elements of this vector without having too many or not enough arguments? Can I evaluate the functions one element at once?
Thanks in advance!
0 comentarios
Respuesta aceptada
Walter Roberson
el 14 de Mayo de 2017
syms x1 x2 x3
f1 = x1^2+x2;
f2 = x3^2;
X = [x1, x2, x3]
nf1 = matlabFunction(f1, 'vars', {X});
nf2 = matlabFunction(f2, 'vars', {X});
Unless you are specifically required to use inline functions by the wording of an assignment (or by a supervisor), you should avoid doing so now. inline functions were fine in MATLAB 4 but early in MATLAB 5, 20 years ago, they were replaced by anonymous functions.
4 comentarios
Más respuestas (1)
Stephen23
el 14 de Mayo de 2017
Editada: Stephen23
el 14 de Mayo de 2017
The simplest solution is to use indexing, and define each function to accept a vector input. Here I used function handles because inline functions are being deprecated.
>> f1 = @(x)x(1)^2+x(2);
>> f2 = @(x)x(3)^2;
>> f1(1:3)
ans =
3
>> f2(1:3)
ans =
9
0 comentarios
Ver también
Categorías
Más información sobre Function Creation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!