

Let me offer up a rebuttal: If you've got complex equations, but you also care about performance, then the Symbolic Toolbox is still a great tool for the job! The key is to use the toolbox's matlabFunction function to convert your symbolic equation into either an anonymous function or m-file.Īs an example, I've recently been working with Non-Uniform Rational B-Splines (NURBS) and found it easier to verify the math if I constructed the basis functions symbolically. If your interested I have it on my computer at home, I can upload it later today. Also, Ive found you can automatically fix most of these errors by wrapping ToMatlab in another function doing something like myToMatlab:=StringReplace,WhiteSpace->""],"old string"->"new string"] A few things dont quite get converted right (special symbols and subscripts immediately come to mind), but for the most part it does a pretty good job. Anything tricky enough that I dont want to do with pen and paper is usually complicated enough to warrent using mathematica rather than matlab.įYI: somewherea long the way I picked up a function for Mathematica called "ToMatlab" that takes some expression in mathematica and converts it to a format that Matlab will accept. If what you want at the end is an equation, well then I still don't use the symbolic toolbox, I use Mathematica. If your final answer is a number- don't touch the symbolic toolbox. The part that originally used symbolic math (which was responsible for all but ~8 seconds of the original runtime of >1 hour) was reduced to about 0.06 seconds, meaning that the actual operation that required symbolic math before got a speedup of >50,000x.
Matlab symbolic toolbox year code#
But that is beside the point).Įdit: I should mention that the "8 seconds" i quoted was for the entire code to run.

It involved an eigensystem decomposition where the eigenvalues were a variable in the matrix being decomposed, and it took me the better part of a week and a fair amount of swearing directed at Mathematica to get an analytic solution. (In past me's defense, the part implemented using symbolic variables and solve was rather tricky. Its not just a trivial speed increase, it is literally the difference between something taking a day and something taking a couple of minutes. That is why you should avoid using the symbolic toolbox outside of a few select situations. That puts the overall increase in speed at around a factor of ~ 500x. Now, what used to take over an hour to run using symbolic math takes about 8 seconds to run with a purely numeric approach. Now this code was slow, and I needed it to be not so slow, so I went about updating the code to not use symbolic math any more.

And, being the Matlab newbie that I was at the time, I had implemented part of this code using symbolic variables and the solve function. Recently, I found myself needing to do something in Matlab that I had implemented in Matlab 4-5 years ago, when I had only been using Matlab for a few months. You often hear "dont use the symbolic toolbox" but rarely do you get a quantitative example of why.
