Passing a function value to another function
Show older comments
To whom it may concern:
I am aware that there is documentation to support this question, I haven't been able to implement a simple solution that isn't beyond my abilities. I have a function that calculates the fluid height inside a reservoir. I would like to pass this value to another function where I define the fluid height as a constant. I need to keep two seperate function files, actualise_level and intialise_level. What might you suggest? Thanks
FIRST FUNCTION:
function [ reservoir ] = actualise_level( reservoir, vol_in, vol_out)
constants;
reservoir(VOLUME) = VOLUME + (vol_in - vol_out) * DT
if reservoir(VOLUME) < 0
reservoir(VOLUME) = reservoir(VOLUME) + abs(min(reservoir(VOLUME)))
end
x = sqrt(4*BASE_INF^2*HEIGHT^2+8*(((BASE_SUP-BASE_INF)*HEIGHT*VOLUME)./LENGTH)) y = 2*HEIGHT*BASE_INF
if x >= y
h1 = (x-y)./(2*(BASE_SUP-BASE_INF)) %h1 is the fluid level as calculated
else error('No solution')
end
end
SECOND FUNCTION:
function [ reservoir ] = initialise_reservoir()
constants;
reservoir = zeros(1,NB_PARAMETERS_RESERV);
reservoir(BASE_INF) = 5; reservoir(BASE_SUP) = 7.5; reservoir(HEIGHT) = 25; reservoir(LENGTH) = 5; reservoir(VOLUME) = 350; reservoir(LEVEL) = h1? %this is where I would like to pass the value in
reservoir = [reservoir(BASE_INF) reservoir(BASE_SUP) reservoir(HEIGHT) ... reservoir(LENGTH) reservoir(VOLUME) reservoir(LEVEL)];
end
3 Comments
I would suggest that you store your parameters in a structure , which would be much clearer for you to work with. Rather than that very awkward
reservoir(index) = ...
you can simply do this:
params.base_ind = 5;
params.base_sup = 7.5
params.height = 25
etc. Doing this creates one convenient variable to pass around, but with the advantage of clear labeling of what each value means.
PR
on 28 Feb 2015
Image Analyst
on 28 Feb 2015
I tagged it as homework for you.
Answers (1)
Rick Rosson
on 27 Feb 2015
0 votes
You could write a script that calls each of the functions one or more times in the desired sequence, passing the output of one function as the input to the other function.
3 Comments
PR
on 28 Feb 2015
Rick Rosson
on 28 Feb 2015
That's exactly what I am suggesting. Maybe you should try it before you simply reject it as inadequate.
PR
on 1 Mar 2015
Categories
Find more on Variables in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!