MATLAB Programming Contest Winner Announced
gooru writes "The MATLAB programming contest winner has been announced. It is a semi-annual programming contest organized by the MathWorks. What makes the contest truly interesting is the final phase is open source. Contestants may submit as many entries as they want and can tweak other entries."
Square One!
The next contest should be to the death. Execute those who fail it. There can only be one. Then we'll see some real open source programming.
open source code for a proprietary platform? I don't think so. I suspect RMS would call this sharecropping. Totally uninteresting.
Comment removed based on user account deletion
Now, this Matlab contest is positioned to lead to the same silly cries. So, allow me to present a link to Professor Matloff's excellent article to head off any silly speculations about the decline of American technical prowess.
I do as much as possible of my work (bioinformatics) in Numerical Python. It's really nice to have the power of a general-purpose programming language as well as a numerical feature set that has equivalents for nearly every special-purpose MATLAB function I've ever needed. YMMV.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
Comment removed based on user account deletion
Octave is the closest thing, but matlab is still best at what it does.
It may be a resource hog, but its certainly very stable (at least in my experience).
http://www.octave.org/
I guess for their speed programming award they are allowed to have prior source. If this wasn't the case, the author would have written it at 393 characters per second!
I'm beginning to wonder if this was rather some sort of PR effort rather than a true programming challenge.
Mathematica, hands down.
Care to name a few ways it exceeds Matlab besides being free?
If you're doing symbolic work, then Mathematica is the program to go with. But if you're doing numerical linear algebra and either don't need the speed of C/C++/Fortran or don't want to deal with those languages, it's kind of hard to beat Matlab. One nice combo is Maple/Matlab. Maple can call Matlab for numerical linear algebra work, and Matlab can call Maple for symbolic work.
Despite all of the people who complain about Matlab being unstable and using up resources, I've always found that running the command-line version of Matlab is fast and stable. The GUI version has some nice features, but they usually aren't essential to the work that I do.
On debian, apt-get search octav to see octave and extensions. Don't forget to install the additions octave-forge, etc. to get near-complete matlab equivalence. In some ways, it exceeds matlab, in some ways, it doesn't. And it is very compatible with matlab.
Octave has also been ported to MacOS X, and is available via Fink.
I agree, I have found octave *very* compatible; in my Quantum Mechanics class, we have frequent Matlab assignments, and I am able to cut/paste code directly between the systems, with no errors so far (but there was one Octave rendering bug with multiplot).
I don't know how Octave/Matlab stack up performance-wise for professional use, but for student use, it is ideal.
multifariam.net -- yet another nerd blog
I use Sci-Lab regularly. With Sci-Lab, I have no need to dole out bucks for the commercial version: Matlab.
In my experience Octave is usually as fast as Matlab for most code. It does have more bugs though, so watch out for strange behaviour.
The problem is the vast libraries from matlab, which are simply not available with octave.
How does Maple compare to Mathematica performance wise?
I would love some nice integration, but the last time I tried Maple (version 7, waay back) performance was abysmal compared to Mathematica.
Hopefully things have changed for the better.
I'm surprised that Mathworks doesn't give out free licenses to students. They do have a cheaply-available student version, but I think they'd attract more potential users if they allowed students to use it for free.
Not libre, but also check out MuPAD. I use it quite often in addition to Octave when I tutor. MuPad and Octave do 100% of the mathematics required for Calc 1-3 and with some work, did everything I needed for other analysis courses. I can't speak to Matlab since I'm not a user, but the free alternatives, at least on the beginning calculus levels, are as easy to use as Mathematica. The graphical output is not as refined, but with Gnuplot and some (shameless plug) resourcefullness can do much of the same things... (well, if you speak TeX :D ).
I was just reading an email from an SEAP (Science and Engineering Apprenticeship Program) rep, and one of the projects I could possibly work on this summer is one using MATLAB to find cross-correlation between LiDAR density data and hi-res images (satellites, planes, etc.) to correct for movement, atmospheric reflection/refraction, angles, etc. and produce accurate and scaled vertical images.
And now I see this. Uncanny.
All my MATLAB code is Open Source. And I am the most popular author (jointly with Luigi Rosa) this month. http://www.mathworks.nl/matlabcentral/reports/file exchange/top10Authors/
My Linux - (L)ove (I)s (N)ever (U)tterly eXPensive
Comment removed based on user account deletion
AFAIK, matlab has better plotting capabilities, maybe somewhat better-tuned numerical libraries. but i really don't know the specifics of them. python is available for free, but it seems that installing all the extra packages, like numpy and plotting, will be kind of annoying.
I've hacked w/ python a little bit, on the windows boxes in my lab, and the pycrust program seems too flaky to use, but the standard python gui that comes w/ the base distribution also had problems running some gui code too. what do people tend to use on windows boxen?
Comment removed based on user account deletion
Imagine a sandbox in which there are ants, sugar cubes, anthills, and rocks. Ants like sugar: collectively they want to bring as many sugar cubes as possible back to their anthills before sunset.
For this contest, you will write the control program that each ant carries with it. Ants, being so small, have some limitations, of course. Each ant can carry no more than one sugar cube at a time. Further, each ant can only see her local vicinity. Your program, which is run sequentially for each ant, knows only what that ant knows. Thus you must bring about the best possible global outcome based only on local conditions. The ants don't have any memory as such, but they can leave behind a chemical trail to guide themselves and others across the sandbox landscape.
Your score is determined by how much progress you make moving food towards and into the anthills. Ideally your ants will move all the sugar cubes onto anthills. Practically this may not be possible; do the best you can. You receive credit even by moving one sugar cube one step closer to an anthill.
Anyway, you want to find the shortest route that goes through n number of cities. I know in one variation of the problem you can't hit the same city twice, but I don't know if that constraint applied in this case. The ants leave a "pheremone trail" which evaporates after a certain amount of time. If the ants start out randomly choosing routes, but over time the routes with more software pheremone are reinforced, because the ant objects choose those paths preferentially.
Si la vida me da palo, yo la voy a soportar Si la vida me da palo, yo la voy a espabilar
Since we're talking about a *programming* contest MATLAB, just how horrible a programming language is it? I've been told that MATLAB's sole value lies in its large suite of libraries, because as a language it borders on the God-Awful. Some real horror stories: no true local variables, until recently each function had to reside in its own file, no way to create cyclic references (!!!) (resulting in only reference counting for GC or something), no general-purpose objects, much less notions like OOP, closures, and the like. The phrase "it makes FORTRAN look advanced" came up. Can someone elaborate?
Matlab is the Visual Basic of numerical computing -- a hodge-podge of grafted-on features. Yes, it gets a job done, yes it promotes code reuse because of the extensive numerical and graphing libraries, but as a "teaching language" it is weak on important concepts, and it is proprietary as all anything, turning engineering colleges into trade schools for MathWorks. And once engineering students glom on to it, you cannot, just cannot get them to use anything else.
I don't care if they implement a numerical algorithm in C++ or if they implement a numerical algorithm in Java -- both of those languages are pretty much callable from anything else on a wide variety of platforms. Yeah, you can call into Matlab too, but is there a free runtime you can download like with Java? And any kind of numerical algorithm using looping instead of built-in vector operations is going to be dog slow, so it is useless for any "production" use (in an academic environment, production use is where you throw a problem at it that taxes the capacity of whatever generation computers you have -- otherwise it is a toy numerical problem where everything you can discover with it has already been done.)
Damn.. I hadn't realized that Octave has grown so. It certainly does everything *I* need now.
Stuff like this reminds me of why I love the free/open source community so.
Comment removed based on user account deletion
When I last used Matlab, we used it just for the matrix calculator and, IIRC, it was free. When did it become a commercial product? Did I miss something or was just not paying attention back then?
"Lawyers are for sucks."
- Doug McKenzie
we have on all our lab computers
Don't use Matlab. There's no alternative to it if you ever can't reach the lab while your brain is on, and Octave isn't nearly compatible enough. I don't have access to Matlab anymore so I can't run any of my functions that I've written.
That said, Octave is OK in its own right, but doesn't have nearly the number of toolboxes Matlab does.
Don't use Numerical Python. It isn't built for hacking around with, and it's a bitch to set up (a lot of package managers won't include all the optional libraries, so if you need those, it breaks your package management scheme).
Frankly, there's a niche open for a good freee, open source simulation language. R is OK for statistics; Octave is good for a lot of things; Scilab flunked horribly for me, but I understand others don't have this problem; and Numerical Python is an underpowered bitch. Be aware that GNUplot exists. It's nice enough, but my main complaint is that all of these packages/programs are entirely incompatible. Possibly the only way you'll be able to get exactly what you want is to write a custom C library.
Comment removed based on user account deletion
Comment removed based on user account deletion
Care to explain how numpy is better than matlab? I'm not trolling, I'm actually about to start numerical processing for my research, and I'm stuck on the fence between using matlab (which we have on all our lab computers) and python, which i'd have the luxury of doing at home since it's free. i barely know either one, so i don't really have any loyalty to either side yet.
Basically, I like numpy because it's Python, and I like Python. More generally, I like having a general-purpose programming language when I'm writing real programs. MATLAB is good at crunching numbers and nothing else; numpy is almost as good (and in my experience, often faster) at crunching numbers, and it's also good at everything else Python is good at. String handling, DBI, and any data structure more complex than matrices, to name the examples I deal with most, are just unbelievably painful in MATLAB, IMO, but they're unbelievably easy in Python/numpy.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
Matlab can be run in a terminal, though not quite as nicely at octave (since it can't use readline). Furthermore, even in the workshop, you can set your editor to emacs rather than the built-in editor.
Almost all of matlab toolboxes are written in matlab -- you can read and modify them as you need.
I love octave, and use it extensivly, but Matlab is technically far superior, both in functionality and performance (most of the time), though octave tends to have cleaner/more flexible interfaces to the functionality that does exist. The license management is annoying, though (not to mention expensive). Luckily, our university has a site license, so it doesn't cost us so much.
Of course, octave loads much faster (even when you don't load matlab's JVM).
Comment removed based on user account deletion
I am an EE. At first I hated Matlab, because it's totaly matrix based, nothing like Fortran. But after actually implementing DSP techniques, I came to love MATLAB.
Beep. Boop. Beep. You have questions. I have answers and your home address.
Wow, that's the worst list of reasons (for anything) I've ever seen. You duplicate reasons with slight variations ([1] and [2], [11] and [4]) or list items that are non-issues (for [1], you can use emacs with m-files as well, for [13], MATLAB is available for Linux and OS X). Reasons [9] and [14] are explicitly not what the parent requested ("besides being free"). [12] isn't even a reason at all supporting that Octave is better than MATLAB. None of them relate to math computational differences between the two (which solves ODE's more efficiently? which can better processes imagery data?). Your entire post is redundant fluff.
And MATLAB's command line (integrated within the GUI) by default uses emacs shortcuts, though I'm a vi user myself.
Have you heard of filters?
matlab has a symbolic toolkit now. I havnt tried it but im buying it soon, and im excited.. damn im a dork.
---------
No matter how thin you slice it, its still baloney.
Comment removed based on user account deletion
I've read the comments posted to this story, and decided again to look into Octave. A quick google pointed me to the categorized list of Octave & Octave-Forge functions.. This list is fairly complete, and extremely useful because it lists what's missing.
Unfortunately, its missing a lot of features I've grown accostumed to using in Matlab. switch...case and varargin / varargout were two that jumped out at me. It appears the functionality is provided, but not in a compatible way.
Ah well. Half of my work is done in Simulink anyway, and the libre equivalent I've seen most people point to stacks up about as well.
and I don't hate MATLAB's interface. Let's see, at the MATLAB GUI-command line I 'cd' and 'ls' to the correct directory, then execute an m-file by typing its name and pressing enter. I press ctrl-a to jump to the start of a line, ctrl-k to clear it. Also, this is the default install of the Windows version. Granted, instead of using the command line I can just click use GUI directory tree in the side panel, which is much faster. And to check the data produced, I can view the Workspace panel that lists the variable names, the data class and the values. Below that lies the command history, in an expandable tree to improve readibility, with date and time stamps. I can't really see how a linux user would have trouble with all of this, especially since all of the panels can be disabled leaving one with only the command line.
Comment removed based on user account deletion
That's what we are using here at MIT: http://scilabsoft.inria.fr/
Comment removed based on user account deletion
Enough griping. There's what, one, two functions out of a hundred that are missing? Provide them, and free yourself from the bondage to proprietary software.
It seems everyone is waiting for someone else to make their life easier.
Comment removed based on user account deletion
Comment removed based on user account deletion
OMG You Fucking Monster!!!! No!! THIS WILL NOT STAND!!!
Ah well, yeah. I've thought about doing that once or twice.
But I've clicked the I agree button on Matlab's license. Worse, I've signed the NDA to see what's coming in the next release. I wouldn't want to put the Octave project at risk.
There are times I think people need to look beyond Richard M. Stallman's views on software and take his other political views seriously as well.
MATLAB's "nested" functions only promote messy programming (a good example of when NOT to add a feature). It is not an OOP language. But you have to remember, MATLAB is not meant for creating operating systems or media players. It's an engineer's ad hoc language, used to solve specific problems as quickly as possible, elegance and flexibility be damned. Sure, a computer scientist using C++ (with the approprate libraries) could code something more refined than the equivalent MATLAB code. It might handle a wider variety of inputs, perform better error checking and might even be fewer lines of code. But the engineer with MATLAB will get the data he needs to do his job, faster.
A lot of these items are FUD.
1) You can choose any editor you want to write your matlab code. You just need to run it in octave. Since octave has a command line interpreter, you can show the result with any editor that can display the results of a run command (emacs will do this, too)
2) Yeah...it has readline, but that's about it.
3) Poster asked, besides being free...this is part of the price.
4) Not true. Any code not written in C, which is a good many of the numerical algorithms Matlab includes, have available source so that you can integrate the algorithms into any finished products (Matlab is for prototyping).
Other than that, you're asking for more than is really needed to extend the functionality.
5) Octave has a code repository. If they like what you write they use it. In other words, you can contribute to Octave.
6) Your fault/FUD. It took me about ten minutes.
7) I didn't have to. More FUD? Obviously this isn't a universal procedure.
8) I've never looked at my License file. I never track what it's doing. This has never been an issue.
9) See issue #3
10) Is this even a reason?
11) See issue #4
12) Obviously you don't have very good reasons. I will present some good reasons after we get through this.
13) This is true of Matlab as well. Try typing "ls" in Matlab and see what happens.
14) See issue #3
Having said all that, let me tell you why you should be using Octave.
The biggest reason is the free as beer thing. Matlab+ all packages needed is astronomically expensive. It's a big deal. We're not talking Microsoft-who-sells-to-consumers expensive - we're talking big-contractors-who-work-for-Engineering-firms expensive. It's kind of like the difference in price between Oracle and Postgres.
However, SOMETIMES it's worth it. As an Engineering student, I've tried and used regularly Matlab's image toolbox, Matlab's neural net toolbox, and their symbolic toolbox, and compared it to the normal canned algorithms.
Matlab is very, very good. They put an extra polish on every algorithm they write. In general, they're better written, and produce more clever results than anything else. Keep in mind that I was dealing with underconstrained problems, so the issues where matters of estimation. Matlab got more accuracy or faster convergence out of it's canned algorithms than you'd get if you wrote them straight from the descriptions supplied by the algorithm's authors.
Having said that, it's quite likely that there are certain areas that Octave will probably eventually fall behind. Symbolic work is one, I think, since their symbolic toolbox is actually an interface to Maple's symbolic engine, which they rent.
Maple doesn't have the manpower to compete with the OSS people writing computer algebra systems. IMHO, right now it's about tied. Three years ago Maple was ahead.
Mod me down and I will become more powerful than you can possibly imagine!
Non-sequitor - why would anyone in their right mind draw any conclusions about American technical prowess from this story?
As far as speculation goes, I'd say that using a Wiki method allowing competitors to change other entries is probably not the fairest way to run a contest, although it is interesting.
Without a proper flamewar, Anonymous was undecided on what shell to run.
Comment removed based on user account deletion
According to Google this contest page is not to be taken seriously. It's a PR 0 page...
Google says, me do. Next story please.
Broken Hearts are for Assholes. - Frank Zappa
Matlab's symbolic toolkit is based on Maple. The simplify function doesn't always seem to work as well as it could. I haven't really used it much, I mostly do numerical (and plotting). Cosine doesn't quite work right, either (1e15 when it should be 0, IIRC). Maybe it's a floating point precision thing.
An open source matlab contest is the same animal as if Microsoft held an open source Excel or Visual Basic contest... except that Matlab costs a lot more, and Mathworks tend to be a lot more evil in its licensing terms.
Matlab costs about $3500... but at my work, somehow it costs $70,000 a year because of some weird ass licensing scheme matlworks sticks large government labs with. I've tired to convince my project that for that money it makes more sense just to hire programmers to add whatever features we need to octave and go tell mathworks to fuck themselves.
Oh, and by the way... all of that money is still not enough to get you bug reports noticed. For that you need to pay for some sort of premiere program.
There are 10 types of people in this world, those who can count in binary and those who can't.
i've done a fair amount of work in numpy --
the upside of numpy is that its python, so you have the whole python foundation to work with... custom GUIs, database connections, web services, whatever you want, its there, its free, and its relatively easy to write new C modules if you need them.
however things get kind of scattered when you try to do a big project. you will find out that what you need is module X, which is part of some bigger project, e.g. scipy, python-scientific, pysparse, etc etc (there are several). as you start to combine more and more modules from different places, the code starts to get messy because you are mixing all these apis together.
and yes, plotting is pretty bad -- py-gnuplot is the best available, and it will only get you so far. some people try to integrate with blender or some GL toolkit to get better graphics... YMMV.
I used to think the open-source ethic of using numpy outweighed the usefulness and completeness of commercial tools, but I don't believe that any more (though it may still be true in some cases). if you are in academics you can get matlab at home for cheap, and if you are an engineer and need it for work, then the high price is not really an issue.
if you are doing research its probably in an academic environment, and probably a competetive one, and if you use numpy the matlab folks are going to code circles around you.
all of that said I prefer to use mathematica -- which is by now fairly robust for fast numeric work as to be competetive with matlab, but with a lot more capabilities -- but its a *significantly* more difficult language/api to master... heavy emphasis on functional programming, lots of non-standard operators, etc.
mathematica's numeric capability has vastly increased with version 5, which makes it a strong matlab competitor. mathematica expressions can also be compiled to remove the type polymorphism and interpreter overhead.
My team made 11th in the ACM contest; my teammates choked, or we would have probably made top 5 at least (this from a no-name American university). I, however, was outstanding. Yet still I have no job...shoulda taken IBM up on its offer.
Seriously, though, it was PC games that got me into programming. Back then, one guy could write a game and sell it. Not so nowadays. Most kids are playing on closed platforms, playing games that take dozens of people to write. I remember fiddling with the EGA barrel rotator...nowadays its all thick, poorly documented (and often broken) API. Ten years ago, you had to sign an NDA and pay $20-40k to program a console. I had Turbo Pascal with a No Nonsense license at $99.
um.. i=0:1:10.
Or do you mean address the first element with 0? Who cares if you start with zero, get used to it and move on.
If you use Matlab in a Unix enviornment ^c works.
It went from troll to insightful. What do you think?
If you're considering any sort of numerical or scientific work with Python on MS windows, get the "Enhanced Python Distribution" from Enthought.
http://www.enthought.com/downloads/downloads.htm
It's Python 2.3.3 with all the major numerical and scientific libraries included. The only thing "missing", IMHO, is the excellent matplotlib plotting library.
http://matplotlib.sourceforge.net/
if you are doing research its probably in an academic environment, and probably a competetive one, and if you use numpy the matlab folks are going to code circles around you.
[shrug] This hasn't been my experience at all, but rather quite the opposite -- that I'm done with my programs and having a beer while the MATLAB users are still struggling and cursing. Believe me, I'm not averse to paying for a product that's worth the money (e.g., Mathematica for symbolic work) but it is my considered opinion, after using both MATLAB and numpy for quite some time, that this really is a case where the F/OSS alternative is genuinely better than the commercial product.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
"""and yes, plotting is pretty bad -- py-gnuplot is the best available"""
...) by using your choice from a variety of backend renderers.
h tml
No at all. matplotlib is the current leader with excellent high-level functions in both an object oriented API and a MATLAB-alike functional API. Figures are rendered on screen with an interactive pan-zoom viewer or to a variety of a variety of file formats (ps, png,
http://matplotlib.sourceforge.net/
If you only need to render to file then the quality of PyX's output is unmatched. It includes very high level functions for common graphics operations and exposes much of LaTeX and PostScipt in case you need to do something detailed or unusual.
http://pyx.sourceforge.net/examples/graphs/index.
I found it interesting that "steal" is used without any negative meaning. It's merely a shorter word for collaborating.
Consider that right now we are told regularly that all kinds of reasonable activities (p2p, using patented software algorithms, making backups of things we paid for, ...) are "stealing". The intention would be that stealing is a crime, and hence these reasonable activities need to prosecuted and what not. However, if a culture emerges where stealing means collaborating, this represents a major backlash for the copyright cabal.
I know, it's just words, but still...
in matlab, octave allows you to write it as:
All in all, I feel that octave has evolved more into improving the basic language itself, while matlab has put most effort into gimmicks such as GUI-building and (poor/slow) OO-support.
Octave doesn't even come close to measuring up to Matlab. I mean don't get me wrong, it's a neat program and it's powerful, but it's not playing in the same league as Matlab.
So why not push it? Well one of the things I know that drives many people away form open source is the feeling that the solutions is offers are half assed. That when you choose an OSS version, sure you get it for free (if you don't need support) but it's going to suck. You'll have to make a bunch of compramises and not be able to do things as easily, or even at all.
That's one of the reasons I like pushing Firefox is it's an example of a great success, something that is at the very least as good as the commercial counterparts, and probably better. You give up nothing for the most part, it really shows OSS shining.
So while you might want to recommend Octave to someone who lacks Matlab but needs a powerful calculator, I wouldn't try and push it as a Matlab alternative for those that use Matlab. You are likely to find that it often doesn't even come close to doing what Matlab can, and that gives a generally bad impression.
If an OSS solutions doesn't measure up to a commercial one, that's fine. Nobody says OSS has to be the best at everything all the time. However if that is the case, don't try to push it as an alternative, unless you are sure that it really will do everything the person wants, and do it just as easy.
hm, interesting.... but do you think they struggle because of language limitation or because they are inexperienced programmers?
Theres an open source program called SCILAB that much resembles MATLAB. If you are to solve a problem from scratch in MATLAB, chances are you can successfully use SCILAB instead. You'll be amazed how mature and flexible the product actually is.
;)
On thing sucks... the syntax is different from MATLAB. You cant use MATLAB "scripts" without heavily modifying them first. Curly brackets, or braces around vectors? Spaces or commas between vector elements? You have to find out and reprogram your brain
SCILAB is available debian package. In gentoo just run "emerge scilab". I dont know about other distros, or BSD.
This is a pretty typical abuse of open source by a commercial company. Not only is MATLAB hugely expensive, in addition, while they make money on platform sales, they want other people to develop free and open source software for their platform to make it more valuable.
In fact, the only thing that has made MATLAB valuable is that it is in widespread use and that everybody develops add-ons for it. As a numerical programming environment, it is technically considerably worse than available alternatives, both commercial and free.
Don't waste your time doing free work for MATLAB (or other arrogant companies like that). The same amount of time and effort would have been better spent contributing to one of the open source MATLAB alternatives, like Numerical Python and Scientific Python.
I'm not sure why writing open source code for a platform that is so completely closed and hugely expensive is a badge of honor. It's like doing "volunteer labor" for poor starving Donald Trump. Right now, you may be getting MATLAB cheap as a student, but have you looked at the prices you have to pay for it in the real world?
Furthermore, while MATLAB is a tolerable language for numerics, as a programming language, it is horrendous. I would not want to hire someone who spent most of his time programming in MATLAB.
Why not devote that energy to writing and contributing Numerical Python code? Numerical Python is free and it's a far better language than MATLAB. Numerical Python does not have quite as many numerical modules as MATLAB yet, but it beats MATLAB hands down in the availability of other libraries (GUI, visualization, plotting, parallel computing, networking, etc.).
Even better, you actually have a prayer of being able to use that code after you leave the university; MATLAB is simply too expensive for many environments.
Octave doesn't even come close to measuring up to Matlab.
Depends on what you mean by "measure up". The stuff that makes Matlab useful is all the libraries and tools created by third parties. Matlab itself is a lousy programming language and a lousy implementation. Octave doesn't have all those third party packages, which makes it more limited.
So why not push [Octave]?
Because Matlab itself is broken; there is no point in pushing the clone of a bad system to an illogical extreme (although that doesn't mean people won't try). It may be convenient for existing Matlab users to have others waste their time giving them a free-as-in-beer alternative, but that's not the point of open source. If you are happy with paying thousands of dollars for Matlab and can live with its numerous limitations, well, just keep on using it.
The alternative to Matlab is not Octave, it is Numerical Python. And compared to Numerical Python, Matlab is half-assed.
Don't expect Numerical Python to be a drop-in replacement for Matlab, it is not. You will have to spend time learning it. Packages you can get for Matlab won't exist for Numerical Python, just like there are lots of packages for Numerical Python that Matlab doesn't have. Overall, in terms of technology alone, Numerical Python is better; the fact that it is free and open source is an additional bonus.
You can move to one of the free alternatives if you like but Mathworks is heading off this challenge by patenting some of the new features of the language. Function handles which are heavily used within all toolboxes now have a patent against them ....
USP - 6,857,118
Octave will not be able to keep up in copying the language and will have to fork so gone will be the days of easy porting of code between the two systems.
I prefer Maple to Mathematica - it's not as quick as Mathematica, but it seems to cope better with really horrible integrals and differential equations. This is just my experience, but most maths PhDs and professors I know prefer Maple too.
I'm not really too keen on Matlab. It's symbolic capabilities are too weak for my needs and I find it easier to prototype numerical things (as well as visualise the final data) in IDL.
I submitted the algorithm that MathWorks uses for generating the MatLab serial key.
It have a user friendly gui and everything, so I had hoped it had a chance.
Do we get rewarded for showing how crappy MATLABs code is?
For instance, their use of the single letter global variable (g, I believe it was) in one (or more) of their ODE solvers?
beh. MATLAB is like crack; as soon as you start using it you know you should take the time to find a *real* solution to your problems... but really, it is far easier to continue on down the path you are on...
No offence meant to the uber geniuses who create the algorithms. But that wouldn't generally be the folks at MATLAB, and when so, they (I hope) aren't the guys making it into crap code.
You succeeded!
Most people doing research in mathematics aren't working on problems for which Maple is going to be particularly useful.
Man, I posted really tired here.
About half the time (cases 1 and 5, and in the fact that Matlab may be falling behind Octave in the use of a symbolic engined) that I said Octave I meant Matlab.
Obviously in my mind they're very interchangable.
Mod me down and I will become more powerful than you can possibly imagine!
They don't use Maple to do their research, they use it to evaluate expressions they don't want to spend all afternoon evaluating manually.
Can you tell which hardware you use it on? And can you list the OS and required packages needed to run you Matlab alternative?
My main problem with Matlab alternatives was the centuries needed updating systems and compiling and downloading and compiling some more until you have something that works but still does not work as well as Matlab. But this was a while ago, and from your posts, things have changed a lot for the better.
Octave uses GiNaC for its symbolic stuff. Currently, part of why Octave's symbolics aren't better, is not that the library doesn't do it, but that the "glue" hasn't been written.
What are you waiting for? :)
octave is not even nearly at the level Matlab is... nothing is. it is quite annoying that they have such a dominant product and noone has an alternative. its still pretty damn good though.
maths packages are something which OSS are just years behind unfortunately. matlab is the only real option for numerical stuff and mathematica the only real option for symbolic (maple is for classrooms, not the workplace).
on the numerics front, you are right there is octave. there are also some GPL C libraries such as matpack and GSL which are pretty good if you are writing a project to be released using the GPL and you take the time to learn the workings of the functions. but then, most problems you don't want to have to write a program to solve an ODE! matlab can do that in minutes whereas it could take a day in GSL. these OSS libraries have great documentation, an important thing for a numerics library.
on the symbolic front, OSS sucks. there is maxima and no documentation beyond introductions. no decent GUI exists and i found myself using the terminal mode. its about a decade behind maple or mathematica.
i have heard rumours that axiom will be good, but i seriously doubt it. and to be honest, i kinda like knowing that mathematica is used by so many people and is very well bug tested. the results may never be checked by a human, so you gotta trust your computer!
You've obviously never deployed nor administered a site license for MATLAB. Talk about a ROYAL PITA. Your time will come.
In the course of every project, it will become necessary to shoot the scientists and begin production.
This is not necessarily a bad thing, however. As an engineer, I use MATLAB (academic license) almost every day because it lets me solve the problems I care about, without having to worry about programming too much. There are many of us out there who are "literate" programmers, and took those courses in college, but as we get older (and have real responsibility), we just want programs that work and solve the problems we need to solve. That is what MATLAB is about. It's not about garbage collection and stack management. If that's your bag, then you need to stick to C or assembly, I guess. Having said that, I think a MATLAB "programming" contest is a bit silly.
Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
Hell, Octave still can't do decent 3D plotting.
octave is not even nearly at the level Matlab is... maths packages are something which OSS are just years behind unfortunately.
If you wish people to believe you know what you're talking about, it would have helped if you'd bothered to give a single example illustrating Matlab being able to do something that would be difficult or impossible in Octave.
This contest is bizarre. You're allowed to take someone else's code, make a few trivial optimizations to it, and resubmit it. If the new code is a tiny bit faster, you win! What the hell kind of programming contest is that? That's like me taking a draft of a novel by a famous author, fixing a few typos, and claiming a Nobel Prize in literature. Are they trying to jump on the OSS bandwagon to seem more hip with the younger crowd?
And the worst part is that, as far as I can tell, there's no prize money! No way am I spending hours racking my brain just to get a blue ribbon and help to advertise their product.
Wow, the contest description is just like the ICFP contest. http://www.cis.upenn.edu/proj/plclub/contest/ants. html
I would have expected something more matlab-specific.
I never really got interested in Matlab as my main development environment for numerical work for a variety of reasons -- some historical, some technical, some commercial, and some personal prejudice. But given that Math Works has the engineering/science academic market sewn up, given that students and faculty are hooked on it, I have found another use for it.
People talk about Matlab as a numerical "scripting" environment, but it is more than that. I have been using it as the numeric/graphical counterpart to a browser, a kind of sandboxed GUI operating system. It does an OK job as a container for ActiveX controls, and if ActiveX is not your thing, Matlab 7 also now acts as a container for Java Swing controls. So not only can you script numerical algorithms written in other languages, a Matlab figure window (graphics-object container) can host either ActiveX or Java widgets, you can issue commands to those widgets as well as receive callbacks from them.
I would really like to have Python in place of Matlab for engineering teaching, etc, but there are some holdups. Arrays are pretty basic to signal processing and related numerical work I am interested in. Matlab's basic data type is of course a matrix, arrays are simply 1 by N matrices, and array data is efficiently interchanged with Fortran/C/C++ using the Matlab libraries. Array data is interchanged with ActiveX functions using Variant variables of safe arrays and with Java arrays pretty much transparently and with a tolerable level of translation or marshalling overhead.
Arrays are a Python add-on and not really part of the core Python language (lists and dictionaries are good and powerful, but you take a performance hit using them to do signal or image processing where each list element is a pixel or a signal sample). As to the add-on, there is both Numeric and Numarray, and while Numarray is newer and recommended, a lot of Python array stuff lives in the Numeric world. And support for numeric arrays is far from universal -- I am pretty sure that the ActiveX support marshals Variant-variable safe arrays as Python lists; the ActiveX/Win32 stuff doesn't know about the numeric array types, making it pretty clunky to pass an image raster to an ActiveX control.
So, what is the current, May 2005 story on array support in Python and which graphing/plot packages are compatible?
Actually, it isn't a real option for numerical stuff, unless you mean playing around/prototyping. For production-quality industrial numerical work, you have to write it yourself. I've had a number of consulting jobs where my task was simply to efficiently duplicate some matlab code in C/C++/Fortran..with the end result that it runs _hundreds_ of times faster, and can be modified/enhanced without relying on Matlab's proprietary toolboxes.
All is Number -Pythagoras.
In my Machine Learning class at Portland State U, we've been using the Netlab toolbox from Aston University Neural Computing Research Group, which is a set of Matlab libraries and programs. I haven't used Matlab's own neural network tools or done any of this stuff in my working life, but NetLab is at least a good learning tool, and is itself GPL.
Several people in the class have speculated how much work it would require to port NetLab to Octave, but AFAIK nobody's actually taken a look. I downloaded it to my linux box but haven't tried to do anything yet myself.
From the Netlab page: "The Netlab library includes software implementations of a wide range of data analysis techniques, many of which are not yet available in standard neural network simulation packages. Netlab works with Matlab version 5.0 and higher but only needs core Matlab (i.e. no other toolboxes are required). It is not compatible with earlier versions of Matlab."
It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
This sounds like a really great concept, I hope some big organisations arrange big competitions/contests where all submitted projects must be under an OSI compatible license, and the winner gets alot of money as a reward and so he can fund the project and develope it further.
Hi, MATLAB has JIT in their newer versions, while OCTAVE doesn't. JIT is very useful to speedup the computations. Ganesh
That's an interesting package. I'll guess that it isn't as full-featured as the Matlab version, and in fact seems to have a somewhat different focus. I'd almost say it's a fairly decent complement to the Matlab toolkit, actually.
Naturally the big stumbling block for corporate development would be the GPL, but it is free, so one can't complain. Still, it'd be nice to see somebody compete with Matlab. A lot of times it's the toolkits, not base matlab, that ends up costing $$$$$. Usually when someone makes a good add-on toolkit, Matlab buys them out, as with Kohonen's SOM toolkit, but to his credit he does still release a GPL version.
There are some things in the Netlab toolkit that might do what I need for some current projects at work, though, so thanks!
Like most languages, it has strengths and weaknesses. Well the way it deals with number processing is a huge strength. It allows you to do things easily that would be far more complecated in something like C++, but it compiles to native code and thus is very fast (espically when done with the Intel compiler).
Fortran in fact isn't widely used in our department, only certian groups use it, but those that do, do so for a reason and it's not just "because that's what they learned". Realise that Fortran isn't a dead language, it is updated continually and we're due for a new spec here soon.
Just because you don't like or understand a language, doesn't mean it's not legitimately the best for certian things. Ya, Fortran isn't something you want to use general purpose, but when you are doing scientific work, it really is the best for the job.
Really, well I guess someone forgot to tell Mathworks. We are doing the renewal right now on our existing licenses (yearly renewal) and it's five figures. We badly need more licenses, as we are always running out (floating license server) but the research groups don't want to pony up the cash. Guess we should tell them no problem, because some random guy on /. who doesn't know what he's talking about says Matlab "costs virtually nothing" for us!
GiNaC doesn't even do symbolic integration, aside from polynomials, and adding the feature is "very low" on the priority list. It's not really comparable to Maple or Mathematica. They've been banging on symbolic integration for two decades.
"Care to name a few ways it exceeds Matlab besides being free?"
Why? He didn't claim that Octave was superior. Just that it's a nice free alternative. What's the problem with that?
It's not often that one of my /. posting is not only interesting but useful to somebody! I hope you find NetLab to be as useful as it might be.
:O) I'd really like to see an OpenGL interface for Octave. I think I may have seen some info that someone was doing that, but I can't find it now.
You've motivated me to at least take a look at porting NetLab to octave this summer. I won't be taking classes and I need to learn how these paradigms work and how to build them, so this might be a good learning experience - although knowing all the idiosyncracies of both MatLab and Octave syntax and APIs may not be considered useful knowledge!!
I still wish there were a language today whose model for working with arrays was as coherent as APL's.
It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
No, he didn't. He claimed that Octave exceeds, which means is superior to, Matlab in some ways. Therefore, I wanted to know what ways he thinks it is superior to Matlab. I want to know this isn't just because of the usual ./ bias that everything that isn't free is bad.
The intrinsic ForTran array management sucks so much that they had to add lots of manual overrides. The manual overrides allow them to pull certain tricks with array management to make it all go fast again. If they know what they're doing.
In real life, you'd be far better off in performance terms if you simply used a rational array management system written in C, prototyped in Ruby or Python and reduced anything performance-critical in the prototype to C again. I have no idea why you'd attempt high performace in C++; it's just as pointless as trying it with Java.
God is REAL unless declared INTEGER*4, and all that.
Got time? Spend some of it coding or testing
Actually nether MathWorks nor Cybernet Systems in Japan support Acadamia. I was trying to get a version for my project, but Cybernet Systems told me to get lost. Before this experience I was getting my University to put this into next years budget. Now I am telling them to take MATLAB out and replace it with Maple. I will find other ways to handle the complexity of my project without FAKELAB. So I am kicking these Frauds out of our Univesity. They talk about how much they support Univerisity projects and when it comes down to the wire, they back out. FRAUD's that is what these companies are, just plain FRAUD's. I have over 49 companies supporting my project and all MathWorks and Cybernet Systems want is CASH in the bank. So this should teach these people a good leason or two.
2. I have never met anybody that programmed in {Scientific,Numeric,Monty} Python, from which we can conclude that they were not hired. People that keep their skills simple, like Matlab and C, usually get hired.
Well, I think that tells us more about the company you work for (and it probably shows in your products as well). We generally do not hire someone who only knows Matlab and C, because it is pretty clear that something has gone seriously wrong with their education. Their school didn't bother to teach them well, and they additionally lacked curiosity or confidence to learn anything else on their own. Put another way, Matlab is so trivial that it makes no difference whether it is on a resume or not: it doesn't demonstrate any useful skill or ability that someone who doesn't know it couldn't acquire rapidly.
3. You have not left the university yet, how would you want to be re-using your code already? I did, and I don't want to re-use my code anyway. It want it to be re-used at the university, while I make other nifty projects at my company.
That's an unwarranted assumption; in fact, I work in industry. That's exactly why it bothers me that some universities (in particular, engineering departments) turn out students who only know Matlab and C, because such graduates are useless for us, even for jobs that are not primarily software development. In my experience, such graduates are unable to understand modern algorithms, to apply modern mathematical abstractions to engineering problems, or even to communicate effectively with software engineers.
1. PhD students do not live in the real world, and therefore do not know what software costs in the real world.
And that's why their professors should make them aware early on because once they get their degree, they have to deal with that.
It's no match for Matlab's symbolic math of course.
I'd agree Octave is a long way behind Matlab in terms of the number of fully implemented, working features.
yeah yeah of course you'd have to do that if you want to integrate it. but i bet they came to the algorithm/solution hundreds of times faster by using matlab ;-) (playing around/prototyping as you call it)
Seriously, on the download page of the octave project there are three versions: An ancient one 2.0.17, a testing one 2.1.71 ("recommended"), a developing one 2.9.3. It's unclear how they differ, where they are documented, what the state of compatibility is. And seemingly, they all use gnuplot for visualization. gnuplot is nice, but really no substitude for matlab.
Sure, matlab is a crappy piece of software where you are constantly forced to choose between elegant code and speed (you can't have both). The user interface is probably the worst I've used so far. Oh, and did I mention that the latest version runs horribly unstable under Linux? Really bad software. And expensive...
But I still don't see an alternative: Matlab's libraries (toolboxes) and visualization are quite good, documented, etc. I don't see anything comparable in the free software world, unfortunately.
Yes, due to the lack of that, Ares allowed me to use it for free when I needed it for a class. (I didn't use it after that, because frankly I didn't like it very much)
Also, I noticed the professor's "license number" on her version of Matlab was "0". Seems it's not just me.
Do take a long serious look at GNU Octave, which was mentioned at several places in this threads. It is a most excellent Matlab-clone.
While it is true it lacks some of the GUI features from Matlab, all of the core math functions are there and much of the standard toolboxes. What I like best about it is that it is so easy to extend in C. That is the best improvement over Matlab, imho.
I think Matlab has some syntactical niceties when doing numerical grunt work.