MATLAB: Str2func vectorize input x1, x2 to x

str2funcvectorize

When using str2func, I find that I can do these things such as,
str = 'x(1)^2 + 3*x(2)';
f = str2func(['@(x)' str]);
f([4 5])
and
str1 = 'x + 2*u';
f1 = str2func(['@(x,u)' str1]);
f1(2,3)
However, what I need is something like
str2 = 'x(1) + u - x(2)';
f2 = str2func('@(x,u)', str2);
f2([1,2],3)
which gives me an error "Too many input arguments."
Any suggestions please? Thank you all in advance.
Qun

Best Answer

You didn't follow your previous successful pattern...
f1 = str2func(['@(x,u)' str1]);
as written is the concatenation of two strings; you correctly concatenated the argument list to the function in the previous cases but for some reason didn't for the following...
f2 = str2func('@(x,u)', str2);
Simply write like you did f1
f2 = str2func(['@(x,u)' str2]);
and all is well. The error is there were two instead of only one string in the argument list.
Related Question