I've recently been doing algorithm prototyping in GNU Octave. Although not fully compatible with Matlab, it usually interprets code written for Matlab correctly. Some functionality (specialized functions) is missing but usually slightly different but equally capable replacements are available.
I must say I'm impressed with how quickly you can develop mathematical algorithms in Matlab/Octave. Basically, you're all done at about the same time you'd start debugging your matrix library in any other language. It's definitely an approach people in computer science in general and robotics in particular should use more often.
Octave uses gnuplot for plotting but hides the gory gnuplot details from you which is really pleasant. On the other hand, if you're used to computer algebra systems such as Maple or GNU Maxima it feels a bit odd to plot a set of points rather than a (symbolic description) of a function. Considering the internal representation of a function in Matlab/Octave it does however make sense the way it's implemented.
Now on to the next algorithm on the list of algorithms to evaluate...