Create function output seperately
Mostrar comentarios más antiguos
Hello!
I am curious if this is possible. Say I write a function
function F = func(x)
F(1) = x(1)-cos(x(2));
F(2) = x(2)-cos(x(1));
end
Now every time I call on this function it calculates the RHS of the equation and gives an output for F. Now if I had a ton of calculations before F that I don't want Matlab to constantly repeat, all I want is the last statement F.
An example would be
function F = func(x)
% I send the x vector in order to get boundary conditions
BC = Boundaries(x);
% Now BC is a function with equations like BC(1) = x(1)+x(2)... etc
F(1) = BC(1);
F(2) = BC(2);
end
I want to use the function F(1) = x(1)+x(2), and not have to constantly send x to BC to "create" those equations.
5 comentarios
I'm afraid I don't really understand what you're asking. What does to "create" those equations actually mean?
You can pass a function to use to another function if that's what you're after (i.e. you could pass different BC functions to func).
Kristoffer Lindvall
el 11 de Sept. de 2018
Dennis
el 11 de Sept. de 2018
You can create BC once and then pass it to func:
BC=Boundaries(2); %creating BC once
F=func(1:3,BC);
function BC=Boundaries(x)
BC=1:3+x; %some heavy calculations
end
function F=func(x,BC) %passing BC aswell
F(1)=BC(1)+x(2);
end
Guillaume
el 11 de Sept. de 2018
Still not entirely clear on what is being asked, not helped by the imprecise terms used. You don't make functions. Functions don't create equations. You call a function with some inputs and it returns some outputs.
In addition to what has already been suggested, since R2017a, there is also the possibility of memoizing a function, a technique that caches the results of a function that is expensive to run so that it is only run if different inputs are provided. No idea, if that's what you're after.
Respuestas (0)
Categorías
Más información sobre Code Performance en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!