In the example below, I use matlabFunction to create the anonymous function intF{2}. The function to be created has five arguments, but one (tau) is a dummy variable of integration. Since tau is not going to be assigned a value, I define intF{2} with a set of 'vars' specified which does not include tau. When evaluated, however, intF{2} returns an error, saying that tau is undefined. When I type out the anonymous function directly (i.e., intF{1}), then it evaluates fine, without including tau as an argument. It's clear from the code sample below that intF{1} and intF{2} are identical. So why should the second version fail and the first one succeed? Is this a bug in matlabFunction?
function nothingsyms x0 t T a tauf = @(tau,x0,t,a) log(x0*exp(a*(tau-t)));intF{2} = matlabFunction(int(f(tau,x0,t,a),tau,t,T),'vars',[x0,t,T,a]);intF{1} = @(x0,t,T,a) int(log(x0.*exp(-a.*(t-tau))),tau,t,T);intF{:}x0 = 16; t = 1 ; T = 2 ; a = 0.5;for ii=1:numel(intF); disp(['Evaluating intF{' num2str(ii) '}']); eval(intF{ii}(x0,t,T,a)) end;keyboard;~
Best Answer