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)
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
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

Plus de réponses (0)

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!

Translated by