Converting function file to Anonomys function.
显示 更早的评论
Given we have the function file
function y = lorenz(t,x,sigma,rho,beta)
% INPUT: t is a a real value indicating time
% x is a column vector of size 3 x 1
% sigma, rho, beta are parameters of the Lorenz
% equations
% OUTPUT: y is a column vector of size 3 x 1 that gives
% the right hand side of the Lorenz equations
y=[0;0;0];
x=x+t;
y(1)=sigma*(x(2)-x(1));
y(2)=x(1)*(rho-x(2))-x(3);
y(3)=x(1)*x(2)-beta*x(3);
end
How can we convert this into a Anonymous function
f = @(t,x) lorenz(t,x,sigma,rho,beta)
??.
6 个评论
What is wrong with f = @(t,x) lorenz(t,x,sigma,rho,beta) ? This seems to be the answer you are looking for (as long as sigma, rho and beta are defined in the workspace)... or is there something unexpected happening?
According to the original question there is no need to use feval or the like. That would be slow and not very robust.
Tom Craven
2015-6-2
Tom Craven
2015-6-2
编辑:Walter Roberson
2015-6-2
Tom Craven
2015-6-2
编辑:Walter Roberson
2015-6-2
Walter Roberson
2015-6-2
Please show the complete trace of the "too many input arguments" error.
Stephen23
2015-6-2
If you are getting an error message please give us the complete message (i.e. all of the red text). We need this to know what is happening.
Also please do not insert empty lines into your code, it makes it difficult to read on this forum.
回答(2 个)
Guillaume
2015-6-1
If you're asking how to replace the whole code in your lorenz function by an anonymous function, I'm not sure it's a good idea as it's not going to be very readable due to the severe limitations of anonymous functions in matlab.
This would be something like:
f = @(t, x) [sigma*(t+(x(2)-x(1))), (x(1)+t)*(rho-x(2)-t)-x(3)-t, (x(1)+t)*(x(2)+t)-beta*(x(3)+t)];
Keep your function in a file. It's a lot clearer.
1 个评论
Sean de Wolski
2015-6-2
编辑:Sean de Wolski
2015-6-2
^This
And not just clearer; faster also!
Nobel Mondal
2015-6-1
编辑:Nobel Mondal
2015-6-1
fH = str2func('lorenz');
y = feval(fH,t,x,sigma,rho,beta);
类别
在 帮助中心 和 File Exchange 中查找有关 Function Creation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!