Octave is good if you have to write matlab compatible code (or just like matlab and don't have access to it).
The new kid on the block Julia[1] is actually pretty nice and as someone who has written a lot of matlab code is quite similar and easy to learn.
If you don't need or want syntax similar to matlab python+scipy+numpy+matplotlib is pretty great.
I was stuck with matlab for most of my work though because of simulink+control systems toolbox and preexisting codebase.