How to generate function handle automatically from the cell array?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Akbar
el 12 de Abr. de 2018
Comentada: Akbar
el 13 de Abr. de 2018
I have a 2x1 cell called "dx", which contains 1x3 cells:
'X * k * m' '*' '-1'
'X * k * m' '*' 'Y_XS'
I want this "dx" cell to be converted into a function. How can I do that? The generated function should look like this:
function dX = myFunc(t,X,k,m,Y_XS)
R = X(2) * k * X(1)/(X(1)+m);
dX = [-R;
Y_XS * R];
5 comentarios
Respuesta aceptada
Stephen23
el 13 de Abr. de 2018
Editada: Stephen23
el 13 de Abr. de 2018
@ashadako: you have since edited your question and completely changed the function specification. This answer give the original specification: you can make the required changes yourself.
The trick is to simply arrange the strings as required, and then use str2func to get a function handle:
dx = {...
'X * k * m' '*' '-1'
'X * k * m' '*' 'Y_XS'};
isn = isnan(str2double(dx(:,3)));
tmp = dx;
tmp(:,4) = {';'};
tmp = tmp(:,4:-1:1).';
str = [tmp{:}];
var = sprintf(',%s',dx{isn,3});
str = sprintf('@(t,X,k,m,%s)[%s];',var(2:end),str(2:end));
fun = str2func(str);
This gives an anonymous function, which you can simply call with the required inputs:
>> fun(1,2,3,4,5,6)
ans =
-24
120
Más respuestas (0)
Ver también
Categorías
Más información sobre Simulation Setup en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!