Solved – Among Matlab and Python, which language is good for statistical analysis

MATLABpython

Among Matlab and Python, which language is good for general statistical data analysis? What are the pros and cons, other than accessibility, for each?

Best Answer

As a diehard Matlab user for the last 10+ years, I recommend you learn Python. Once you are sufficiently skilled in a language, when you work in a language you are learning, it will seem like you are not being productive enough, and you will fall back to using your default best language. At the very least, I would suggest you try to become equally proficient in a number of languages (I would suggest R as well).

What I like about Matlab:

  • I am proficient in it.
  • It is the lingua franca among numerical analysts.
  • the profiling tool is very good. This is the only reason I use Matlab instead of octave.
  • There is a freeware clone, octave, which has good compliance with the reference implementation.

What I do not like about Matlab:

  • There is not a good system to manage third party (free or otherwise) packages and scripts. Mathworks controls the 'central file exchange', and installation of add-on packages seems very clunky, nothing like the excellent system that R has. Furthermore, Mathworks has no incentive to improve this situation, because they make money on selling toolboxes, which compete with freeware packages;
  • Licenses for parallel computation in Matlab are insanely expensive;
  • Much of the m-code, including many of the toolbox functions, and some builtins, were designed to be obviously correct, at the expense of efficiency and/or usability. The most glaring example of this is Matlab's median function, which performs a sort of the data, then takes the middle value. This has been the wrong algorithm since the 70's.
  • saving graphs to file is dodgy at best in Matlab.
  • I have not found my user experience to have improved over the last 5 years (when I started using Matlab instead of octave), even though Mathworks continues to add bells and whistles. This indicates that I am not their target customer, rather they are looking to expand market share by making things worse for power users.
  • There are now 2 ways to do object-oriented programming in Matlab, which is confusing at best. Legacy code using the old style will persist for some time.
  • The Matlab UI is written in Java, which has unpleasant ideas about memory management.
Related Question