Using 'solve' function in Simulink
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Daniel Bronson
am 13 Nov. 2013
Kommentiert: Mikkel
am 5 Sep. 2014
I have a very non-linear equation that I need to solve during run-time of a Simulink simulation. I have been using the 'solve' function in normal scripts to solve for this. Unfortunately, I need this to be solved in run-time of the simulation.
I have tried to use an embedded Matlab function with the 'solve' function in the script. The problem is that it doesn't like 'syms' command used in conjunction with the 'solve' command. I have tried using the coder.extrinsic with the parameter, but it gives the error, "Undefined function or variable 'v'.... It doesn't seem to appreciate that I have declared 'v' as a syms in order for v to be solved for in the 'solve' function.
Has anyone successfully got the 'solve' function to work in a user-defined Matlab block in Simulink? I have raised this issue in front of a few dozen students at my University, and am interested in showing them a solution. Thank you!
For your ease, I have attached the simulation I am attempting to run. You can find the specific problematic block in the 'Velocity' block on the 'Top Level' file.
1 Kommentar
Walter Roberson
am 13 Nov. 2013
To check: would it be possible for you to do the solve() symbolically in MATLAB, and use matlabFunction() to generate parameterized MATLAB code, that you incorporate into Simulink ?
Akzeptierte Antwort
Azzi Abdelmalek
am 13 Nov. 2013
5 Kommentare
Mikkel
am 5 Sep. 2014
Kaustubha: I'm now entering this
eval(solve(u(2)*cos(u(3)-u(4))-u(1)*cos(x-u(4)),x))
and it is being calculated, though extremely slow! is there a way to speed this up?
Weitere Antworten (1)
Walter Roberson
am 14 Nov. 2013
If
P = .5*R*Cd*A*v^3 + Cr*M*g*v*cos(theta) + (M*g*v*sin(theta)
then
R*Cd*A/2 * v^3 + M*g*(Cr*cos(theta) + sin(theta))*v - P = 0
the solution is then
roots([R*Cd*A/2, 0, M*g*(Cr*cos(theta) + sin(theta)), -P])
Two of the roots might be imaginary.
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!