When matlabFunction creates an anonymous function, its arguments are always scalars. But when I want to use the function, my data is in vector form. Indeed, when I create the matlab function, I don't know the size of the vector. Is there some way that I can convert an n x 1 vector into n scalars for the purpose of feeding it into my matlab function? Here's an example
syms c1 c2 c3 c4 c5 c6 c7 c8n = 5;c = sym('c',[n,1])f = @(c) prod(c)jacf= matlabFunction(jacobian(f(c)))
jacf is now a function with arguments c1 … c5, specifically
jacf = function_handle with value: @(c1,c2,c3,c4,c5)reshape([0.0,c3.*c4.*c5,c2.*c4.*c5,c2.*c3.*c5,c2.*c3.*c4,c3.*c4.*c5,0.0,c1.*c4.*c5,c1.*c3.*c5,c1.*c3.*c4,c2.*c4.*c5,c1.*c4.*c5,0.0,c1.*c2.*c5,c1.*c2.*c4,c2.*c3.*c5,c1.*c3.*c5,c1.*c2.*c5,0.0,c1.*c2.*c3,c2.*c3.*c4,c1.*c3.*c4,c1.*c2.*c4,c1.*c2.*c3,0.0],[5,5])
If for example my vector c = 1:5, is there some way I can break it into scalars so that I can compute
jacf(1,2,3,4,5)
Or, better, is there a way I can convert jacf into an anonymous function whose vector argument is [c1,c2,c3,c4,c5]
Thanks for any suggestions!
Best Answer