It seems you need a license to use MATLAB. I do not have one so I was wondering if there was some highly-compatible substitute for it in Linux.
GNU Octave has "a language that is mostly compatible with MATLAB". They also have a section in their FAQ about MATLAB compatibility that covers pretty much all the difficulties/differences between the two.
Depending on what exactly you need to do:
gnuplot is good for basic-intermediate graphing
matplotlib (using Python) is also good for graphing
Maxima is a computer algebra system
R
Octave/ KOctive (GUI).
Scilab
Matplotlib
Sage
I'm not sure if these are applicable without knowing what you're trying to achieve.
Sadly, you won't get anything as powerful as Matlab without paying up.
Again depending on what exactly you need to do
R - a free software environment for statistical computing and graphics.
There is Octave, an open source Matlab-like program. Don't know how compatible it is with the 'real' Matlab.
Octave
Scilab
Python + SciPy + MatPlotLib
Besides Octave, check also:
Pari/GP
http://pari.math.u-bordeaux.fr/download.html
Related
OCaml comes with the Graphics module which allows the use of a graphical window.
Is it possible to open two graphical window, and switch between them ?
The Graphics module provides machine-independent tools but in case of a negative answer, perhaps it would also be interesting to have solutions for different window system, such as X11.
I looked through the Graphics module API and I don't see support for multiple windows. I would assume Graphics was intended as something useful but simple enough to be part of the base OCaml release.
For more complex graphics, it makes sense just to provide OCaml bindings to an existing library. If I go to opam.ocaml.org/packages and search for "graphics" I see a few possibilities.
I have done OpenGL coding in OCaml but in fact I had to build some wrappers for OS-native GUI functionality to create the windows. This was many years ago, however.
The Graphics module is quite limited and is more intended as a simple basic library for teaching purposes. A possible replacement for Graphics might be the tsdl package which is a thin wrapper around the SDL C library which should work on most platforms.
I would like to generalize a build system to compile on several (somewhat similar) platforms. What is a good method for determining the type of host that the shell script or Makefile is running on. I would like to distinguish between mac and linux, but also different specific distributions of linux (e.g. RHEL, Ubuntu). Cygwin is not important for me, but if you include it in your response I am sure others will find it valuable.
The rationale may include using the host type to fetch and install the correct versions of binary packages when it is more convenient to do so than compile from source. In addition, some commercial software is binary-packaged for specific distros, so part of the motivation is to grab the right binary.
Thanks,
SetJmp
Autotools to the rescue. It has tons of macros that help you do this kind of stuff.
http://www.lrde.epita.fr/~adl/autotools.html
uname -a to distinguish major *nix variants
Not so sure what the best way to distinguish red hat from ubuntu would be - could look for package managing tools and query installed packages, eventually helping you narrow down different debian derivatives, etc. There's probably something more obvious and up front though.
linux variants generally store distro information in /etc/issue.
most kernels will put info in /proc/version
It's not completely straightforward. You can use uname to find out the general parameters but to differentiate between distributions is a harder task. Maybe you should consider using something like autoconf to generalise your build system?
Just in case you're using Qt, there's this really nice set of defines, Q_OS_*, that guide you to the Operating System you're compiling on:
Q_OS_AIX
Q_OS_BSD4
Q_OS_BSDI
Q_OS_CYGWIN
Q_OS_DARWIN
Q_OS_DGUX
Q_OS_DYNIX
Q_OS_FREEBSD
Q_OS_HPUX
Q_OS_HURD
Q_OS_IRIX
Q_OS_LINUX
Q_OS_LYNX
Q_OS_MAC
Q_OS_MSDOS
Q_OS_NETBSD
Q_OS_OS2
Q_OS_OPENBSD
Q_OS_OS2EMX
Q_OS_OSF
...
They are defined in QtGlobal. There are even defines that help you figure out the compiler used Q_CC_* or the target Windowing System Q_WS_*.
But if you're not using Qt and want to go for a generic method, you most likely have to fall back to the Autotools package or CMake.
Determining Linux distributions is pretty tricky, but not hard. You first have to figure out what distributions you care about and then make all kinds of distribution specific file/configuration checks like in this example for the ones you've chosen, since you can't really support all of the myriad of Linux distros available out the. :-)
As for the Mac side i'll let the Mac experts answer, but it shouldn't be that hard, since at least the diversity issue is out of the question.
Usually I develop image processing or recognition programs on windows. But I got a customer who requires me to implement one on Linux platform.
Because his platform is embedded system, I don't know for sure that OpenCV would be available. Could anyone give me some clue to get started?
You can package OpenCV with your application.
The word 'embedded' makes me nervous - image recognition can be very computationally expensive. You may need to roll your own code to fit the target constraints.
The starting point of your own code is likely to implement a Haar-like recogniser.
This is of course what you'd likely be using OpenCV to do. A more ambitious recogniser is HOG. Here's a nice comparison of them.
OpenCV is in standard repositories for Ubuntu and/or Debian Linux. As such it should run on many processors including ARM. If it runs a full Debian, it is a matter of apt-cache search opencv, then install the modules you want via apt-get install.
The big gotcha is the embedded part. If it doesn't run a full Linux, then you may end up compiling for a very long time. Cross your fingers it runs a full Linux (like Debian.)
Adaboost should be a good fit for use as a learning algorithm. Paul Viola and Michael Jones have an interesting paper on efficient face detection using Adaboost and Haar classifiers. There's a lot of math there, but it's worth reading.
I am working on embedded linux, Is there any open source 2D renderer available which can draw on memory, scanline based, complete fixed-point support.
I work in c or cpp programming language.
I know one with which satisfy my all needs that is, Google Skia which google uses in android and chrome, But I found it without documentation, not straight-forward compilable, not straight-forward usable in 3rd party projects.
Regards, Sunny.
Checkout Cairo. I am not sure what you mean by "complete fixed-point support" but other than that it seems to meet your requirements.
Allegro is a games library which includes extensive software rendering, most of which does not rely on floating point. Additionally it has some trig functions and maths functions which work on fixed-point. It has things like sprite-rotation which don't need floating point.
Don't know if it's what you're looking for, but there's libcrtxy
http://libcrtxy.sourceforge.net/
DirectFB.
If you want hardware acceleration , directFB is the most portable way to go.
I'm looking for a library like Cairo, just far faster. It has to be a library that works with C or Python. It also would be nice if I could output to PNG, and SVG. I am looking at Qt's arthur, but that's C++, and I'm not a fan.
Any suggestions?
Edit: another precondition is that it has to run under Linux.
Python has aggdraw
I don't know what's fast, but here's a rendering comparison.
Edit: Apparently Xara is supposed to be much faster than Cairo.
Google's Chrome browser and Android platform make use of their Skia vector library.
I heard second-hand that Vladimir Vukicevic has quickly ported Cairo to be able to use Skia. A quick googling seems to confirm it:
http://people.mozilla.com/~vladimir/misc/cairo-skia.patch
Not sure when or if this is mainstream, but I'd anticipate a major speed-up across the board!
OpenGL?
It can do 2D pretty well. :)