MATLAB: I’ve generated a matlab anonymous function. I get errors on calling it

function parametersMATLABsymbolic

syms ax ay az bx by bz k double
a=[ax ay az]'
au=a./sqrt(ax^2+ay^2+az^2)
b=[bx by bz]'
bu=b./sqrt(bx^2+by^2+bz^2)
R=[bu(1)*au(1) bu(1)*au(2) bu(1)*au(3);
bu(2)*au(1) bu(2)*au(2) bu(2)*au(3);
bu(3)*au(1) bu(3)*au(2) bu(3)*au(3)]
c=R*a;
Crotated = c;
matlabFunction(Crotated,'file','testMatrix.m')
aa = [200. 100. 0.1];
bb = [200.13 99.995 0.12];
cc = [aa,bb]
Crotated(cc)
The error is:
Error using sym>checkindex (line 2429)
Index must be a positive integer or logical.
Error in sym>privformatmatrix (line 2387)
checkindex(x);
Error in sym>privformat (line 2362)
s = privformatmatrix(x);
Error in sym/subsref (line 1578)
[inds{k},refs{k}] = privformat(inds{k});
Error in rotations (line 26)
Crotated(cc)
Other times I got the error "Not enough input arguments". If I debug the program it seems that all the values are considered by Matlab to be the first variable in the function's list of variables. The other 5 are considered to be empty and I got the error. I've read some other similar questions, but didn't find a answer. Please explain, or name a simple solution to 'split' the values and give them to the other variables (from the function's list of input variables).

Best Answer

Your code produces this function file:
function Crotated = testMatrix(ax,ay,az,bx,by,bz)
%TESTMATRIX
% CROTATED = TESTMATRIX(AX,AY,AZ,BX,BY,BZ)
% This function was generated by the Symbolic Math Toolbox version 6.2.
% 11-Jun-2015 12:36:11
t2 = conj(ax);
t3 = conj(ay);
t4 = conj(bx);
t5 = ax.^2;
t6 = ay.^2;
t7 = az.^2;
t8 = t5+t6+t7;
t9 = 1.0./sqrt(t8);
t10 = bx.^2;
t11 = by.^2;
t12 = bz.^2;
t13 = t10+t11+t12;
t14 = 1.0./sqrt(t13);
t15 = conj(az);
t16 = t2.^2;
t17 = t3.^2;
t18 = conj(by);
t19 = t15.^2;
t20 = conj(bz);
Crotated = [t4.*t9.*t14.*t16+t4.*t9.*t14.*t17+t4.*t9.*t14.*t19;t9.*t14.*t16.*t18+t9.*t14.*t17.*t18+t9.*t14.*t18.*t19;t9.*t14.*t16.*t20+t9.*t14.*t17.*t20+t9.*t14.*t19.*t20];
Your function is called testMatrix, not Crotated, so you need to call it as:
Crotated = testMatrix(aa(1),aa(2),aa(3),bb(1),bb(2),bb(3));
if that is what you intend.