Here is something fishy.
sigma = func2(t,x,sigma_x,func1(kc,t))
...
function sigma = func2(t,M,sigma_M,func1)
If you want to pass the output of func2 as an input to func1 that's ok, but do not name the output func1. This confusion causes func1 to be interpreted as a variable, which is why you get this error. You can pass the function as an argument like you do, but you need to name the variable used in func2 something other than func1.
What you do is similar to writing:
func1 is now a variable, so the next time you call it it will be interpreted as such.
Best Answer