matlabFunction forces me (unnecessarily) to include a dummy integration variable as an argument of the anonymous function it creates.
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Leo Simon
am 1 Jan. 2016
Beantwortet: Leo Simon
am 5 Jan. 2016
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 nothing
syms x0 t T a tau
f = @(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;
~
4 Kommentare
jgg
am 4 Jan. 2016
I did the following as well: replacing lines 3-4 with
f = log(x0*exp(a*(tau-t)));
intF{2} = matlabFunction(int(f,tau,t,T),'vars',[x0,t,T,a]);
And it seems to work properly here. I get:
@(x0,t,T,a)int(log(x0.*exp(-a.*(t-tau))),tau,t,T)
without any errors. Which version of Matlab are you using? It might be a bug.
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Number Theory finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!