I am using symbolic toolbox to generate a matlab function. But the number of input to the generated function is varying with the number of objects that I need (e.g., number of switches). For 2 and 3 switches the generated function look likes this :
y = fun(a1,a2,b1,b2)
y = fun(a1,a2,a3,b1,b2,b3)
In the script using this function I establish vectors of these parameters:
a = [a1 a2 ...]
What I want is to either call the generated function directly or make a wrapper function, so that I do not need to change the call statement when I change the number of switches. To complicate this problem even more, these variables are ACADO variables. That means that matrix and element-wise operation is not allowed (i.e., all math operation must be done with scalars, and equations in symbolic toolbox must be written for scalars).
You probably look for cell arrays and the {:}
operator. It changes the contents of the cell to a coma separated list. The result can be passed to a function as parameters. For example:
v2 = {a1, a2, b1, b2};
v3 = {a1, a2, a3, b1, b2, b3};
And an example function:
function fun(varargin)
display(['number of parameters: ' num2str(nargin)]);
You can call the function for different number of parameters 'transparently' as follows
fun(v2{:})
number of parameters: 4
fun(v3{:})
number of parameters: 6
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With