Hacker News new | comments | show | ask | jobs | submit login

SciPy+NumPy+MatplotLib == Matlab ($2k+) returns true for most applications

That's good enough for me to not bother with any other scripting language.

Sadly matlab still is much easier to use and understand for engineers, which is one of its, if not the, primary market(s).

I agree that numpy python programming is nowhere near matlab for ease of use.

I prefer using python for machine learning tho. I dislike the libraries written in matlab.

Is numpy+python faster than matlab?

To be honest I have no reason to conclude that one is faster than the other but I would hope that given its age and girth matlab is more optimized.

The main reason I say matlab is better for engineers is that its documentation is beyond amazing, if you think of something you need you search in the help browser and there is a good chance it is there with substantial information (something that is much harder with the math/science python libraries) also if you know a functions name you just type: help function and get plenty of information which helps when you forget how to use something and need a quick lookup.

I have done some things with scipy but nothing more than solving some odes and I must say even with all the pains of matlab with writing separate files to solve odes and other such things plus some syntax grievances it is still the easiest solution for me.

Since both (I assume) are calling the same BLAS and LAPACK libraries underneath the scripting niceness, it's likely they're very similar in speed.

Of course it depends what you're trying to do. I'm pretty sure that numpy/scipy have a lot more overhead than Matlab for everything that _isn't_ just a blas/lapack call, but I don't have the numbers to back it up.

I do know that I tried rewriting one of my C++ codes using scipy/numpy and it was about a hundred times slower for that particular task (which did happen to involve very large matrices, approaching the limits of memory).

From experience that kind of slowdown for pure numeric algorithms happens when your numpy/scipy code is structured in a way that it makes extra unnecessary copies.

Matlab also recently has gotten much better in its support for function approaches. You need those for e.g. numerical integration and solving differential equations.

The earlier solvers took strings with the name of a function whenever they needed a functional argument. Nowadays Matlab provides `function handles' to refer to a function without calling it. The syntax is @function_name, they need this special syntax, because just mentioning function_name itself in your code, calls your function without arguments.

Matlab even support proper closures with lexical scoping, now.

Show me proper Matlab data structures, I/O libraries, and string manipulation and I might actually care about language features...

I do agree with all of these advantages of using Matlab in an environment where my data is already cleaned and normalized; I just rarely find myself in that position.

Matlab has made great strides. They even have proper data structures now. String manipulation also got somewhat better, if I remember correctly. The problem is, that (like with C++) the standard string isn't the `right' string with all the advanced bits.

I do not know about I/O libraries. All my Matlab knowledge basically comes from helping out friends with Matlab problems, and reading the manual together with them.

As someone who spent a significant fraction of today trying to get scipy and numpy installed on one of his machines (and failed) I can totally see your point here.

We would love to improve your experience in installing SciPy and NumPy. I'd like to invite you to join the mailing list and raise these issues so we may address them.

The easiest way to install the suite of scientific computing Python packages on Windows may be PythonXY or Enthought EPD. Under Linux and OSX, users seem to have few problems.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact