I provide the following example that, while not NURBS, will fit within a Reddit response and demonstrates the functionality: %% SYMBOLIC SUBSTITUTION (SLOW!!)įx = piecewise(condition,valueIfTrue,otherwiseValue)ĭisp("Symbolic Substitution of " + string(length(u)) + " elements takes " + string(time1) + " seconds.") (Every piece of literature will state something to the effect of "by using the recursive definition we never have to explicitly construct the basis functions") 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.
#Do i have matlab symbolic toolbox 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.
#Do i have matlab symbolic toolbox license
I'm not working on a student license either.You often hear "dont use the symbolic toolbox" but rarely do you get a quantitative example of why. I also realised that the documentation is always available when I take Help -> Product Help from the menu-bar, though it is not available in the function browser even after I try the sample code.ĮDIT-II > license('checkout','Symbolic_Toolbox') I'm not sure if this problem is just for this particular toolbox or not, but the other toolboxes I use at least seem to work fine. Some of them seem to blame it on MATLAB hashing the tollbox incorrectly, so I tried the rehash toolbox command as well, but had no luck. I found a few instances of other users facing similar problems on the Mathworks portal, but none of them seemed to provide any concrete solutions. However, the problem again arises when I close and reopen MATLAB. The code works fine and on trying the help command again, they seem to work fine as well. Moreover, when I try some simple code such as: > syms k x However, the toolbox seems to be installed when I try the ver or pathtool command. Type "help help" for help command options, such as help for methods. Use the Help browser Search tab to search the documentation, or
When I try to access any function in the 'Symbolic Math Toolbox' in MATLAB, such as help ztrans or help laplace, I get the following kind of message ztrans not found. This problem may seem a bit weird please bear with me.