Is it possible to reference an array of inline functions or function handles created within a structure in MATLAB?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Is it possible to reference an array of inline functions or function handles created within a structure in MATLAB?
The following example demonstrates this problem:
f1 = inline('sin(x)');
f2 = inline('cos(x)');
h.f(1) = f1;
I now calculate
h.f(pi/2)
ans =
1
But if I define:
h.f(2) = f2
I get
h =
f: [1x2 inline]
Now I try to calculate inline results:
h.f([pi/2;pi/2])
I receive the error
??? Comma separated list must have exactly one item.
How can I reference the index of the vector of the inline functions, as well as pass an argument?
Réponse acceptée
MathWorks Support Team
le 27 Juin 2009
You should not create the vector of inline functions. When you do this without a structure, you receive an error.
f1 = inline('sin(x)');
f2 = inline('cos(x)');
f(1) = f1;
f(2) = f2
??? Comma separated list must have exactly one item.
To work around this error, rather than creating a vector of inline functions, you should create a cell array. Here is an example:
f1 = inline('sin(x)');
f2 = inline('cos(x)');
h.f{1} = f1;
h.f{2} = f2;
h.f{2}(pi/4),
This produces the correct result:
ans =
0.7071
You can also do this with function handles
f{1}=@sin;
f{2}=@cos;
feval(f{1},1);
end
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Function Creation dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!