Agreed. You use Matlab if you want to do work that will not been seen outside of academia. You use R if you have some hope of getting a real job after your postgraduate years, and you use C/C++ code with Python (or Lua if you like the Torch work) as your glue if you plan on being one of the rock-stars that people actually compete over.
If you've ever done anything with matrices (and are lazy) you should have encountered Matlab. And if you haven't, it's worth checking out. Matlab made my life so much easier!
Octave is basically a poor mans Matlab. If you think Octave might a good answer then Matlab is definitely a better answer if you can afford it. Matlab has better performance, a better IDE and a much bigger collection of libraries.
That being said Matlab is a pretty poor language for anything beyond prototyping and testing proofs of concept. And when I'm doing anything that might turn out become a longer lived project I always choose Python and numpy.
Are you planning on getting work done? Or are you looking forward to digging into the source of yet another GNU tool that is stuck 20 years in the past?
"One of the biggest new features for the Octave 3.8.x release series is a graphical user interface. It is the one thing that users have requested most often over the last few years and now it is almost ready."
If you're planning on spending more than a few hours in the tool, consider spending the $200 on the one that's from this century.
I picked up Matlab late and wish I'd done so sooner. It's a REPL for higher-level thinking and quick experimentation. It makes some hard things very very simple and some simple things very hard. They've dropped the price and fixed a lot of shit in the last 5 years. It's replaced a lot of goofing around in Python and Excel for me.
Edit: I have a love/hate relationship with R and more of a love relationship with Python but they don't do ANYTHING like what Matlab does.
Isn't Octave built with Matlab compatibility in mind? And Octave 3.8.0 was released back in December 2013 - so the GUI is already present, and from this decade. It's a great open source alternative to Matlab in my eyes for anyone that does not want to stump up $200.
Since you linked to several thousand words explaining the differences between the languages, as well as the following quote: "The plan is for the GUI to be considered stable with version 4.0" then I'll assume you haven't used either product. I assure you that I did not spend $4k just to insult the open source community.
Love open source, glad they're doing it, much love to the devs -- and life is just too fucking short. If you're broke or screwing around--ok, maybe. If you're sitting in it more than an hour a week, maybe Photoshop is worth the $10/month vs GIMP, dig?
And if you're in school and get it for free or are interested in getting up to speed with the state of the art in machine learning and qualify for the personal license at under 200 bucks? I can't think of a better tool.
For the record, Photoshop > (GIMP)x10000 IMHO. (Just finally glad I found someone that may agree)
I've not used Matlab but I've used Octave (during the ml class from Andrew Ng) and it wasn't too awful. Occasionally very frustrating though so if Matlab solves those frustrations I could see it being worth it if you're going to spend time in it!
Several thousand? Evidently you like to exaggerate. The content is circa 1000 words - but the point it makes in relation to this context is delivered in the first sentence.
I've used both before. Matlab in my CompSci BS and MS and Octave in my professional career.
I'm just making the point that your critique of Octave seems a little harsh, and to the Leyman skews the reality - that Octave is an open source alternative. Yes, a little rough around the edges if you intend to use the visual aspects of the tool, but for matrix multiplication etc it has its use cases.
The parts you say are good about Octave are EXACTLY the stuff I use Python and R for. If you want to use a Matlab library or toolkit, maybe cut in paste some code from a paper, do a quick 'what if' thing -- Octave just doesn't cut it.
(My point in speaking up here isn't to diss Octave it's to re-center the reality around Matlab.)
I've used Scilab/Xcos a bit for continuous simulation. I know there is the ANN toolbox but I haven't used it. It's a pretty usable Free "Matlab clone" but I usually only see GNU Octave mentioned. Just tossing it out there, as I said I mostly use it to draw pretty Lorenz attractors ;)
Agreed, I'm surprised people aren't talking more about Mathematica. I feel like it is a way nicer experience, the user community is great and the built-in computable data is awesome. It's expensive, so it may not make sense for messing around, but for real prototyping and deployable APIs, it's worth it.
Matlab is popular mostly because there's a lot of code in place to do optimization and to compare to past work. I personally stay away from it these days because its pretty horrible for anything but that, e.g GUIs.
You can't have taken a college-level course in applied mathematics without touching Matlab. Maybe not all statistics courses use it, but we definitely used it when we were learning about newton elimination, linear/poly regression and other things where you solve mathematical equations that aren't analytically solvable.
And yes, that was a mandatory course for CompSci. You mean people get through CS without touching Matlab and such? That's bonkers.
You definitely can. I only ever touched Matlab in a course on Signal Theory (wavelets, Radon transform, Fourier...) All other courses involving anything needing solving 'somehing, were programmed from the ground up in C (off the top of my head this included Numerical Methods, Numerical Analysis, Dynamical Systems). In more algebra focused classes we used gp/pari or Mathematica.
Call me silly, but implementing Numerical Methods/Analysis from the ground up in C sounds like something that would put me in a fetal position in a dark corner somewhere. Why would anyone do that to their students?
Did they also make you implement operating systems in assembler?
Well at Carnegie Mellon they did. That's why I wanna know how some punk got his Caltech paper stamped without even learning C.
He did seem sad that SpaceX wouldn't touch him. Apparently you need more than friends at the Jet Propulsion Laboratory and an ability to talk endlessly about Haskell to send shit to Mars. So that's good news at least.
I'm a mathematician, not CompSci (but I taught CS students and they had to also implement some things in C on their second semester.) So, no operating systems. Tough stuff was taken for granted when I was in the University.
There seems to be two schools of thought when it comes to teaching numerics. You either teach how to effectively implement the algorithms or you teach how to effectively select and apply the algorithms. It seems to be tied to if the computational science department comes out of the Computer or Math department.
I'm personally of the opinion that knowing how to select and apply the right algorithm is far more important to learn for undergraduates. Implementing numerical algorithms correctly and efficiently is serious high level PhD territory, and if you're not going to learn how to do it right you're much better off not doing it at all and leaving it to the experts.
Applied math grad student here. C/C++ or Fortran was required for my computational/numerical courses. Part of this was because of the emphasis on numerical stability and complexity.
I was, however, surprised starting out to find out how many of my fellow students had never programmed in a compiled language before - different focuses during undergrad, I suppose.
Another applied math grad here. Our intro numerical course was taught in Matlab since it made it a lot easier to focus on stuff like numerical stability and complexity without getting stuck in the details of teaching people C. Everybody who ever uses a computer to do any sort of math needs to know about concepts like stability, truncation, accuracy and precision, not everybody needs to know C or Fortran. It seems unnecessary to me to tie the learning of the one to the learning of the other
It wasn't before the intermediate courses that Fortran (77 and 95),C and assembly where taught. And even there Matlab was used to illustrate most higher level concepts.
Why no Python ? Why not C ? What about Lisp ? And Haskel ? Hey did I mention D ?
I can agree that JS is not the best suited languages for this task but, JS is extremely well know so it is perfect to explain something.
Matlab... Humm is not so widely know...