How do i transfer big symbolic equations into Simulink

34 visualizzazioni (ultimi 30 giorni)
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 Commenti
Sed
Sed il 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 il 20 Giu 2022
Hello sed, I have same problem,can you explain how you fixed it?

Accedi per commentare.

Risposta accettata

Ced
Ced il 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 Commenti
Negin Borna
Negin Borna il 25 Giu 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 il 25 Giu 2022
Please show the code for the function that reports that erroy

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by