Passing a function value to another function
Ältere Kommentare anzeigen
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 Kommentare
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
am 28 Feb. 2015
Image Analyst
am 28 Feb. 2015
I tagged it as homework for you.
Antworten (1)
Rick Rosson
am 27 Feb. 2015
0 Stimmen
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 Kommentare
PR
am 28 Feb. 2015
Rick Rosson
am 28 Feb. 2015
That's exactly what I am suggesting. Maybe you should try it before you simply reject it as inadequate.
PR
am 1 Mär. 2015
Kategorien
Mehr zu Variables finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!