MATLAB Survey for Mac OS X
gsfprez writes "It's fairly simple: MATLAB wants to know if a Mac OS X port would be worth their while or not. I tell you what, I know a few engineering R&D organizations who'd have to reverse their anti-Mac IT decisions solely based on the idea that MATLAB would be available for Mac OS X because there could finally be high power, yet affordable, Unix machines running it."
I tried to vote early and often, but the survey looks like it will be conducted by phone and not the web. The survey link simply gives you a form to fill out you name, title, address, ect... And that's it, no other questions. So expect a call from marketing in the morning.
There's always the open source alternative called Octave. It doesn't even require a license server, something I hate about matlab.
'SBEMAIL!' is better than a goat!!
It is also posted on MacNN:
http://osx.macnn.com/news.php?id=13863
Mathematica offers a great symbolic algebra tool, a functional scripting language, a good plotting data visualization tools.
MATLAB offers a great procedural scripting language, awesome array/matrix handling, and good plotting data visualization tools. Although, overall, MATLAB scripts run very slowly, when it comes to array/image manipulations, our best coders couldn't write C code that would perform as quickly as a well-written MATLAB script.
I have extensive educational experience with Mathematica and extensive proffesional experience with MATLAB. One is good for some things the other is good for other things. For basic math projects or assignments, probably either tool is equally good, and tools such as Octave or SigmaPad are effective and free alternatives for MATLAB or Mathematica, respectively.
MATLAB and Mathematica shine, however, when it comes to toolboxes. At Lockheed Martin, I used the Neural Network and Image Processing toolboxes extensively, and I was very happy with them. Also, MATLAB lends itself nicely to reprogramming your code in C, or using MEX wrappers to program in C or insert C code into MATLAB.
Although I don't have much experience with Mathematica add-ins (except for the Statistics Toolbox), I imagine that they are also well written and efficient. I would guess that Mathematica would have better *analytical* toolboxes, whereas MATLAB would have better *numerical* toolboxes.
But one thing I know HASN'T change is Matlab's horribly inefficient scripting. I'm probably not representative, but I never seem to do anything "standard" with any tool - I usually find "standard" solution I'm content with without redesigning them (DCT, for example). I always do nonstandard things, usually nonlinear, and Matlab hasn't once given me a good surprise (and I gave it more than enough chance). I'm not one of them. I've worked in languages (APL, Fortran) and environments (some IBM vector pipelines from 10 years ago whose name I can't recall, among others) that capitalized on vectorized access; I write vectorized matlab code. Unfortunately, sometimes it's the wrong thing to do.
In one case, while trying to compute a three dimensional electrostatic field around a weird asymetric structure, I needed a matrix that contained, for each point in space, a distance from one of a set of given points. Doing this vectorized required multiple large intermediate matrices (think tens of megabytes), none of them sparse. When I debugged the matlab code on small matrices, it worked fine; When I went to the full size, it got a slowdown factor of 500 or so due to swapping. I rewrote this as a Matlab loop instead without any additional computation, and it was 5 times faster (100 times slower than anticipated if vectorizing didn't spill to disk). Writing the same loop in Numeric yielded nearly 20 times improvement. Not quite the vectorized result, but just 5 times slower than that (The code did many superfluous computations, which were unavoidable in vector form). I also converted the original vectorized version to Numeric, and it ran at exactly the same speed as Matlab.
It was around that time that I stopped taking Matlab seriosly - Python/Numeric consistently outperformed it in any test, was easier to interface to C, and didn't have licensing hassle attached. It isn't as prettily packed, and you have to collect "packages"/"toolkits" yourself instead of relying on Mathworks to do that for you, but it has been more than worth my time to do so. Actually, I don't. Are you designing a new DCT algorithm, different from the Lanczos/Daniels, Sorensen or Winograd algorithms? Because doing so would take you days (if not months) in any environment. Are you designing a new DCT implementation? If Matlab saves you time, you should probably be spending time on something else - Matlab doesn't help you evaluate precision loss, limit cycles, saturation problems, etc. Is that DCT needed as a component inside something else? Then you aren't designing a DCT algorithm at all - the same way you call "dct2()" in Matlab, you could do that in C, Python, Fortran or Lisp.
Regarding your DWT algorithm - you didn't really try to compute any interesting wavelets or any continuous ones lately, have you? Another area I have experience with and which I found Matlab severely lacking (And yes, I _was_ designing new wavelets, not just reiterating the standard families). It has decent graphing capability, but nothing out of the ordinary. I used DISLIN, gnuplot, and various other packages through time; They're just as easy to use, some give matlab-quality output, and there are a few that give quality output, that I wouldn't be ashamed to publish in a referreed magazine (which I can't say about matlab output).
The reply suggests, more than anything, that you've only used Fortran, C and Matlab - out of which Matlab is definitely the environment of choice for most design work. But there are a lot of other tools out there, and I have found them definitely worth my time. Check them out when you have the time.
Personally, having a strong Prolog origin, I like Mathematica's syntax as well, and usually requiring weird things Matlab can't do efficiently, don't find it significantly slower than Matlab even for numeric work. But that's probably just me.