Create function output seperately
显示 更早的评论
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 个评论
Kristoffer Lindvall
2018-9-11
Dennis
2018-9-11
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
2018-9-11
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.
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Code Performance 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!