MATLAB: Stuck with function giving a zero output when calling global variables

global variablesMATLABzero output

Hi, I have defined global variables (all scalar) in my main script, along with their values.
When calling a function which calls these global variables, and assigning the required inputs, I get an output of zero. Here's my code:
function q1 = Hfcrsk(a,b)
global k Cpb Skbfn Cdil Tc0 Cstr Tsk0
Tc=a;
Tsk=b;
Skbf = ((Skbfn + (Cdil.*(Tc-Tc0)))./(1+(Cstr.*(Tsk0-Tsk))));
q1 = (k.*(Tc-Tsk)) + (Skbf.*Cpb.*(Tc-Tsk));
Calling Hfcrsk(30,35) for example always gives a 0 output.
Please help!!! Thanks:)

Best Answer

You get a zero output most likely because one of your global is zero when you call your function. Put a breakpoint on the skbf = ... line and look at the value of your global when it's hit.
There's a very good reason that global are despised and it's that it's near impossible to keep track of where they're being modified. 99% of the time there are much better solutions than globals.
In you case I'd just pass around a structure with fields k, Cpb, Skbfn, etc. (and actually I'd give then some names that actually mean something) and pass that structure to the functions that need it.