MATLAB: Is it possible to reference an array of inline functions or function handles created within a structure in MATLAB

arraysfunctionsinline()MATLABstructures

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?

Best Answer

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