Passing a function value to another function
Mostrar comentarios más antiguos
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 comentarios
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
el 28 de Feb. de 2015
Image Analyst
el 28 de Feb. de 2015
I tagged it as homework for you.
Respuestas (1)
Rick Rosson
el 27 de Feb. de 2015
0 votos
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 comentarios
PR
el 28 de Feb. de 2015
Rick Rosson
el 28 de Feb. de 2015
That's exactly what I am suggesting. Maybe you should try it before you simply reject it as inadequate.
PR
el 1 de Mzo. de 2015
Categorías
Más información sobre Variables 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!