Python – MATLAB good for? Why is it so used by universities? When is it better than Python?


I've been recently asked to learn some MATLAB basics for a class.

What does make it so cool for researchers and people that works in university?
I saw it's cool to work with matrices and plotting things… (things that can be done easily in Python using some libraries).

Writing a function or parsing a file is just painful. I'm still at the start, what am I missing?

In the "real" world, what should I think to use it for? When should it can do better than Python? For better I mean: easy way to write something performing.

UPDATE 1: One of the things I'd like to know the most is "Am I missing something?" 😀

UPDATE 2: Thank you for your answers. My question is not about buy or not to buy MATLAB. The university has the possibility to give me a copy of an old version of MATLAB (MATLAB 5 I guess) for free, without breaking the license. I'm interested in its capabilities and if it deserves a deeper study (I won't need anything more than basic MATLAB in oder to pass the exam 😛 ) it will really be better than Python for a specific kind of task in the real world.

Best Solution

Adam is only partially right. Many, if not most, mathematicians will never touch it. If there is a computer tool used at all, it's going to be something like Mathematica or Maple. Engineering departments, on the other hand, often rely on it and there are definitely useful things for some applied mathematicians. It's also used heavily in industry in some areas.

Something you have to realize about MATLAB is that it started off as a wrapper on Fortran libraries for linear algebra. For a long time, it had an attitude that "all the world is an array of doubles (floats)". As a language, it has grown very organically, and there are some flaws that are very much baked in, if you look at it just as a programming language.

However, if you look at it as an environment for doing certain types of research in, it has some real strengths. It's about as good as it gets for doing floating point linear algebra. The notation is simple and powerful, the implementation fast and trusted. It is very good at generating plots and other interactive tasks. There are a large number of `toolboxes' with good code for particular tasks, that are affordable. There is a large community of users that share numerical codes (Python + NumPy has nothing in the same league, at least yet)

Python, warts and all, is a much better programming language (as are many others). However, it's a decade or so behind in terms of the tools.

The key point is that the majority of people who use MATLAB are not programmers really, and don't want to be.

It's a lousy choice for a general programming language; it's quirky, slow for many tasks (you need to vectorize things to get efficient codes), and not easy to integrate with the outside world. On the other hand, for the things it is good at, it is very very good. Very few things compare. There's a company with reasonable support and who knows how many man-years put into it. This can matter in industry.

Strictly looking at your Python vs. MATLAB comparison, they are mostly different tools for different jobs. In the areas where they do overlap a bit, it's hard to say what the better route to go is (depends a lot on what you're trying to do). But mostly Python isn't all that good at MATLAB's core strengths, and vice versa.