How do i transfer big symbolic equations into Simulink

21 views (last 30 days)
Hello everyone,
I am trying to solve the dynamics of a serial manipulator with 6DOF, and I want to transfer the result of an m file (vector of symbolic Torques) into a Simulink block and replace the symbolic variables with a vector of input to have the final numeric result as an output of the block.
I tried a Matlab function block but it does not support symbolic variables.
I tried to call the function as an extrinsic function but Simulink crashes every time I run it.
"from workspace" and "from m file" blocks are not what I need since I have an input to the block.
Any suggestions?
Thanks in advance.
  3 Comments
Sed
Sed on 19 Apr 2016
hello Stefan,
I cannot use a constant block because it only has an output, no input.
I have this huge symbolic vector, I want to put it in a simulink block with an input and output, so that the input replaces all the symbols in the vector and displays a numeric one in the output.
let's say I have the following:
syms q1
syms q2
syms dq1
syms dq2
T=[cos(q1)+sin(q2)*dq1 ; son(q2)*dq2]
I want symbolic T to be in a block and the vector [q1;q2;dq1;dq2] to be an input to this block. matlab function would do it but it doesn't support symbols.
I also can't not use symbols because I have some derivations in the code.
I tried to copy the massive symbolic T vector in a matlab function but it's so big that simulink crashes every time I run it.
Negin Borna
Negin Borna on 20 Jun 2022
Hello sed, I have same problem,can you explain how you fixed it?

Sign in to comment.

Accepted Answer

Ced
Ced on 19 Apr 2016
What do you mean by "matlab function does not support symbols"? Maybe I misunderstood your problem, but there is a function called matlabFunction, and it is specifically made to take symbolic expressions and turn them into "numerical functions".
Here is a small example for a 3DOF robot arm:
% Given: symbolic EoM dx = f(....)
syms q1 q2 q3 dq1 dq2 dq3 T1 T2 T3 real
q = [q1 q2 q3]'; % generalized coordinates
dq = [dq1 dq2 dq3]'; % derivative of generalized coordinates
T = [T1 T2 T3]'; % torque vector
% ... HERE: computation of EoM, returning symbolic dx = f(q,dq,T)
% now generate function
matlabFunction(dx,'file','f_dyn','vars',{[q;dq],T});
This will generate a file f_dyn.m with function
function dx = f_dyn(in1,in2)
where in1 = [ q ; dq ] and in2 = T
  9 Comments
Negin Borna
Negin Borna on 25 Jun 2022
Hello Every one.. I do this method and use matlab function block to call matlabFunction and run simulink but one error shows “ output argument ‘matrix name’ is not assigned on some execution paths. What should I do and write in this block to fixed this error?
Walter Roberson
Walter Roberson on 25 Jun 2022
Please show the code for the function that reports that erroy

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!