필터 지우기
필터 지우기

How do i transfer big symbolic equations into Simulink

조회 수: 15 (최근 30일)
Sed
Sed 2016년 4월 18일
댓글: Walter Roberson 2022년 6월 25일
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
Sed
Sed 2016년 4월 19일
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 2022년 6월 20일
Hello sed, I have same problem,can you explain how you fixed it?

댓글을 달려면 로그인하십시오.

채택된 답변

Ced
Ced 2016년 4월 19일
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
Negin Borna
Negin Borna 2022년 6월 25일
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 2022년 6월 25일
Please show the code for the function that reports that erroy

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Simulink Functions에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by