Matlab is an excellent software, but it is commercial and its price is very high. Other alternatives are available (Octave, Scilab, Freemat, ...) but each one has pros and cons. Is there a real competitor of Matlab?
in a recent paper, we have compared matlab, octave and scilab in the operation of fuzzy relational composition. Our results show that the implementation in the octave language is very slow when compared with Matlab (the fastest) and scilab. However, octave allows the implementation of functions in the C language, which greatly outperforms all script implementations.
Article Fast Fuzzy Inference in Octave
I have found a GUI for Octave (GUI Octave), which is quite rudimentary but may be effective for a basic use of the system. However I have found Octave to be incomparably slower than Matlab for large matrix computations.
http://www.softpedia.com/get/Science-CAD/GUI-Octave.shtml
R + RStudio =]. apart from the language differences, GUI looks very Matlab'ish [ short introduction is here: http://otexts.com/fpp/using-r/ ]
You can use Python and as package Ipython.
Very similar to Matlab and also easy to use for data analysis.
http://ipython.org/
http://matplotlib.org/
Regards
R is no doubt a strong alternative to Matlab. It actually depends on your requirement, because R is a good option for Graphical outputs and Statistical Analysis , but as far as Imaging is concerned, no doubt Matlab is first choice.
R being Free source is widely gaining popularity these days, and will be a strong contender for all statistical softwares in the market.
Python seems an interesting option. I wonder if its libraries offer the same flexibility in matrix manipulation, the most useful operations (basic ops apart, I am think on svd, pseudo-inverse, etc.) and comparable performance levels. The point is that Python and Matlab have two different targets (general purpose the first, matrix-oriented the second) and this should have some consequence in the corresponding features.
Without doubt, the alternative option to MATLAB is Octave. To statistical questions, the strong tool is R. Both packages have different purpose: MATLAB and Octave works perfectly in numerical calculus, but not as statistical software. R is an excellent, free and popular package.
Octave GUI is the best Alternative to MATLAB, It has most of the functions similar to matlab and the syntax is almost similar, moreover the command line execution is also possible. Above all Free of Cost
I suggest you to use python or Code::Blocks IDE with OpenCv library, in case that you want it to Digital Image Processing, and also works very well with all the others functionallity of MATLAB
Mathematica can be one of the alternate to MATLAB. For statistical analysis we can also use SPSS.
@Corrado Scipy/numpy should be competetive in terms of speed and features for linear algebra, since it has wrappers for BLAS/LAPACK and ARPACK for sparse linear algebra, but the performance will of course depend on how good versions of these libraries you have installed. I particularly appreciate the scipy optimization library which has saved me any amount of work.
But Python/numpy/scipy is of course a lot more programming language and a lot less of a nice program for plotting a sine function. If i just need to multiply two matrices, I tend to use octave.
Yes, I was also stuck with similar situation regarding MATLAB. Many of their features are costly even for the academic purpose. According to my own experience, my best advice is to use R Studio, probably the best open source IDE for mathematics, statistics and machine learning.
http://www.rstudio.com/ide/
For normal calculation octave is the best. And for statistical calculation I guess R is the best option.
I used Octave GUI. And even veried it with MatLab. Very few difference in representation of graphics exist and some programms are not present. More differences for parallel computation are expected but I am an expert.
I think that a usage of any normal programming language is better than ready packages even at the beginning it leads to more work. I use Java and even create my own program like Matlab. So I use my own programming language ACL and have an interpreter program for it made with Java. Java is free and has huge possibilities and ready code.
For digital image processing applications, you can use Intel's Open CV; otherwise java is also good. you can also use ObjectProDSP which can be used as a tool for both DSP and an object framework for developing interactive scientific and engineering applications.
definitely depends on the application at hand. there are much better options on specific situations. Can you tell what application are you pursuing?
I think that open sources alternatives to matlab such as octave might work. They basically replicate Matlab sintax and functions (with some differences) but be aware that some of the functionalities are often missing and you might have to re-write some of the basic code in some instances.
It depends on the application, but I have tried Scilab and in some cases it's rather easier to use than MATLAB.linear algebra, simple control design and so on can be very well done by Scilab.
When we compare any software/application, to be fair, we should categorize them fisrt into opensource or licenced source.
I'm to try GNU Octave ,because is a computer program for performing numerical computations. It is mostly compatible with MATLAB.
What about SAGE?
This is a very interesting topic, and well put. I have searched for an alternative for a long time, specially one that you can use in a server. Recently I have found SAGE, which as it seems is a mature and well developed alternative for Matlab, Mathematia, etc. It also has a lot of interesting packages.
Anyone has more experience with SAGE? Please elaborate.
Python, with http://www.scipy.org/
There are a lot of opensource libraries for python if scipy don't match all your needs I'm sure that you could combine it with other ones and match almost all your requirements.
Depends on the application. For general applications Python would be a good choice, if you need to do serous statistics (random number generation, PDF sampling etc...) R is probably the best.
I tested scipy-numpy-matplotlib + Python, It "seems" you can do everything with this combination as with MATLAB. But, the problem is an userfriendly interface.
I worked with/search about Scilab, it's good (especially in userinterface part), but, it "seems" that there is not enough packages for some works.
Now, I'm trying to work with Octave and Sage. As my previous try, I think Sage can be a good choice, but before doing some technical projects I can't say it surely.
in a recent paper, we have compared matlab, octave and scilab in the operation of fuzzy relational composition. Our results show that the implementation in the octave language is very slow when compared with Matlab (the fastest) and scilab. However, octave allows the implementation of functions in the C language, which greatly outperforms all script implementations.
Article Fast Fuzzy Inference in Octave
I can recomend R for statistical computing:
http://www.r-project.org/
Here you can find (unfortunatelly rather old) comparison of R, MATLAB and Octave:
http://www.sciviews.org/benchmark/
Surely, it depends on the application. For symbolic purposes, Mathematica or Maple are better choices
I choose octave. It is almost fully compatible with matlab which allows me to shuttle my codes between office and home.
Strongly depends on the application.
If you performs several loops (for or while) sweeping an operation, this is the case when this operation can´t be writed in the matricial form used in matalb, then is better tu use a compiled software. Like a C or Fortran executable.
But if you need to comunicate with remote instuments or network computers at the same time tha you performs numerical operations, then Matlab looks like the better option.
My global opinion is that exists programas, equivalent or better than Matlab for an especific aplication, but Matlab is the best option to cover all usual cientific applications. It cover from the basic numerical calculus to hardware interfase using the same plataform.
Aditionally is very intuitive and easy to implenent a frendly user interfase.
Python may be useful. There are lots of articles about the pros and cons.
The following blog may help.
http://www.stat.washington.edu/~hoytak/blog/whypython.html
Just in case, sorry for double-posting. Did anybody recommend the RG thread by Juan-Esteban Palomar Tarancon, see below? A huge collection of useful tools with many hints what the tools are for.
https://www.researchgate.net/post/Free_math_software_and_tools
Dear Marco, in my humble opinion the best replace of Matlab is Scilab, mamy of the features given by Matlab can be done with Scilab, including the GUI, with a powerfull and flexible tool.
As second choise I think that Euler (Silab plus maxima) is the better computacional tool existing inside the world of Scientific Computing.
I am a bit surprised that nobody mentioned Julia yet... (http://julialang.org).
Julia is a relatively new but very actively developed language, inspired by Matlab, R, and a few other mentioned here. It is a general-purpose system language, but designed with attention to the scientific usage. The language has a syntax similar to superficially similar to Matlab, having n-dimensional matrices as a primitive data type, but with a lot of powerful features, and much faster than any alternative mentioned here, besides Matlab itself in some cases, and C. It has a growing number of community maintained modules (an equivalent to toolboxes, but namespaced), has bindings to gnuplot, matplot, etc. for interactive plotting, and supports two-way script communication with python. They provide a console-only interface, but there is a notebook interface (IJulia) based on IPython (with web and QT interfaces), as well as a simple QT based IDE (JuliaStudio).
(Edit: I use Matlab everyday, and love it; but if I where to start learning now, I'd go for Julia for high performance and Python for quick prototyping)
Freemat is an open source alternative which uses much of the same language as MATLAB (or very similar).
It depend on your usage... though python is good for both scientific as well as numerical calculation some times you wont get proper function for any particular problem as you will get in MATLAB. pypy code runs much faster then MATALAB. but if you want a statistical analysis with comparatively moderate size data set (if using own PC) I advise you to use R.
MATLAB is very fast when performing matrix multiplications since it uses the multithreaded BLAS subroutines from the Intel Math Kernel Library (MKL). That is why Octave (and perhaps Numpy) are not as efficient. Even compiled languages such as Fortran 90 with the intrinsic matmul function can be much slower.
When using the gfortran compiler, there is a switch (-fexternal-blas) to replace the internal matmul with an external BLAS library (openblas, atlas) to significant improve matrix multiplication speed.
Here are some benchmarks of multiplying two 5000x5000 matrices of random numbers:
gfortran (using OpenBLAS): 4.8 s
gfortran (using ATLAS): 10.3 s
gfortran (built-in matmul): 48 s
MATLAB (single thread): 9.8 s
MATLAB (multiple threads): 3 s
Octave: 38 s
Note the Fortran programs above were single threaded, so with OpenBLAS, it holds quite well with multithread MATLAB.
MATLAB is better than Scilab and python. Python being an open source is good to use but some qualities of MATLAB are unmatched like image processing matrix multiplication. The only draw back matlab suffers is memory issue when you have a big layered matrix.
My experience with Scilab was not good at all.
I'd suggest python since it's an interpreted language like matlab and can support more advanced features, like parallelism.
You want the "best alternative" in terms of programming syntax? computation speed? portability? features? ease of use? I think this question needs to be elaborated upon.
I think R is one replacement to Matlab which is free and has many available packages which you can use like Matlab.
for more information please visit http://www.r-project.org/.
For statistical analysis: R
For image analysis: Try ImageJ
These tools are all free, with source available, are high quality, provide good charting capabilities and have a large and active user community. I'm reasonably certain professional support is available (at a cost) for any of them, including installation, training, custom development, etc.
If there are some existing MATLAB codes that you need to use, your best chances are with Octave and Scilab, although neither can run every MATLAB code without changes.
Even you will get a nice comparison in attached file. I am sure it will help you to take a good decision.
I recommend you to consult the book "Scientific Computing with Matlab and Octave." One of their authors, Mr. Dirk Roose, exalted the qualities of Octave, in a conference imparted recently in Santa Clara, Cuba. If you want, I have that book in digital format, I could send it to you in an email, because I am not able to attach it here...
Greeting.
It's Python with all the various scientific libraries (SciPy) installed.
Check out Enthought Canopy for a pre-stocked distribution (free).
it depends, if you want very high level of computational speed and optimization you can use C/C++ & Fortran.
otherwise if you want a more high-level environment to develop your solutions or more ready to use libraries and codes instead of cutting edge performance you can try Python or R or Scilab or Julia and many others that are mostly open-source or free.
have a look here please
https://pythonhosted.org/spyder/
There are many choices other than Matlab like Microsoft Visual Studio, C#, C++. OpenCV, Mathematica but its depends on your experties and applications
There are lot of free softwares/packages are available depends upon application. In general SCILAB will give you a good alternative.
I've been working with Linux Ubuntu since 2004, I think that a good alternative to replace Matlab is by using SCILAB. Of course, a good alternative is also R. Every day I'm more convinced of the need to learn R.
To me Matlab mainly offers a convenient interface to well known (and often also open source) resources. To my understanding, most of the heavy duty lifting is not done by Matlab but with resources like LINPACK and BLAS. For a field specific tasks you can find a lot of implementations, such as OpenCV for machine vision. However, if one is doing research and want to do quick and dirty experiments Matlab most probably has already something available. On the other hand the latest methods are not there either and you have to extend the libraries yourself any way.
So if I had to select something "non"-Matlabian, I'd go for c/c++ or, despite my disgust for reptilians, even Python. The both have wide support for the above mentioned open source libraries. One trades off a bit of development time in the dirty experiments, but then you might end up with some code that is actually closer to "real" implementation that could be used somewhere...
It depends a lot about what you have to do. If you spend a lot of time doing linear algebra with large sparse matrices, and you need interactivity and relative simplicity, there is not much alternative to Matlab. However scientific python is fast closing the gap with fast, excellent packages and a very clean language.
Check out scientific python
http://www.scipy.org/
I recommend anaconda as a complete package for doing scientific calculations with python.
https://store.continuum.io/cshop/anaconda/
Of course 100% free. All the best.
Here you can find an interesting report
"Comparative Evaluation of Matlab, Octave, Scilab and others"
http://userpages.umbc.edu/~gobbert/papers/ComanHPCF2012.pdf
There is a new kids in the block. http://julialang.org/
I hope you will find it interesting. Below is a short list of features:
"A Summary of Features
Multiple dispatch: providing ability to define function behavior across many combinations of argument types
Dynamic type system: types for documentation, optimization, and dispatch
Good performance, approaching that of statically-compiled languages like C
Built-in package manager
Lisp-like macros and other metaprogramming facilities
Call Python functions: use the PyCall package
Call C functions directly: no wrappers or special APIs
Powerful shell-like capabilities for managing other processes
Designed for parallelism and distributed computation
Coroutines: lightweight “green” threading
User-defined types are as fast and compact as built-ins
Automatic generation of efficient, specialized code for different argument types
Elegant and extensible conversions and promotions for numeric and other types
Efficient support for Unicode, including but not limited to UTF-8
MIT licensed: free and open source"
Hi
I would say there are two double questions hereunder:
A1) you need an advanced tool for your professional life for 10-20+ years ahead, with many professional toolboxes, well maintained, that you can trust (can we really trust Matlab? If your bridge falls down based on an error of your calculations with Matlab, it's still YOUR responsibility, NOT Matlab's, even if you might be able to track the "error" to Matlab's internal algorithm, and that applies to all software!)
A2) you need a quick tool to make smaller analysis tests, some data handling etc not really for any long term use
B1) you have your institution that backs you up and can pay the "high" price for a tool like Matlab with all required toolboxes + training and maintenance, AS WELL AS all the other SW tools you might need i.e. FEM, Optics, Chemistry, Laboratory Metrology, ...
B2) you are alone and really need more than Matlab to gain your living, hence you must choose to enter within your budget.
And to add another criteria: are you studying the math algorithmic or the higher level physics to be simulated, in which case there are better tools that have all the math under the hood, and you can concentrate on the true Physics (incl. Chemistry , Bio, Engineering ...)
My criteria is that when all the external SW tools I need to get my job done costs me more than my own yearly salary (in purchase writing off, maintenance and training) then I'm over the sustainable level, and I must choose and cut.
That is why I have only kept one basic Matlab (only because it links to another software) and put the cash in some higher level FEM tools that allows me to go much further. And in the mean time I do my standard math and calculations in cheaper SyQuest, Scilab or PyThon ..., and keeping my code sufficiently generic to be able to quickly translate it from on to another
C, Matlab ... and algorithmic's are fun, but today there are new tools (take Modelica based ones, or COMSOL Multiphysics, with its "Physics Builder" that go much further, leaving most math algorithmic under the hood, freeing your time to go quicker and further in your search of understanding the underlying Physics
Ivar
There are many choices other than Matlab like Microsoft Visual Studio, C#, C++. OpenCV, Mathematica. However, best choice is depends on your application. For example if you are planning to work on computer vision or image processing application than i guess MATLAB/OpenCV is best. However, you can use C/C++ but in this case you need to write thousands of line code for one task , while in Matlab and OpenCV just few line code.
Second thing if you really want real time performance to your application then you should choose C/C++ because Matlab a bit slow.
I my opinion the alternatives must be able to compete with matlab on subjects like having as many toolboxes as matlab and more importantly a big community support for getting help if you need to code a project .
I think some very good alternatives are Python(matplotlib+numpy+scikitlearn+scikitImage+...)
,GNU octave (many toolboxes ),R Language(many packages and ideal for statistical projects)
In the case you need a very faster code you could use C,C++,Fortran but there is a trade-off between speed of running the code/memory used(C/C++/Fortran are very faster and less memory consuming) and speed of you writing the code(you can code very faster in Matlab/Octave/Python/R).
I think that NCL ( NCAR Language ) is very useful.
https://www.ncl.ucar.edu/
Actually, if we talk about Octave - it does have GUI. Might not be the most stable one, but... Goes as an extension.
However, I personally think that Matlab is one of the best tools for scientific work. Numerous toolboxes, Matlab Compiler for building standalone applications, etc.
I used to use octave + GUIoctave. But, somehow got C++ version conflict and couldn't solve it. So, change to octave3.8, which has GUI, yes, experimental version. Looks good to me and no C++ version problem.
If we focus on mathematical operations there are Mathematica, Maple. If we focus on any function/toolboxes alike C++ or Java would be better. If we focus on efficiency in programming and stress on objectives of the programming, I can say Matlab is the most suitable. We may develop our own functions and also create our own toolboxes, and we may convert our scripts in executable application. More over Matlab also has Simulink.
Python packages like Matplotlib, Numpy and Pandas are really powerful and I think they do almost everything you can do with Matlab. Even the speed in Python can be better than Matlab, but the first one is a general purpose programming language and the speed strongly depends on the tools you use (for example you can have different speed if you use a Numpy array or a Python List or a Python tuple).
You will not find anything exactly like Matlab. So you need to pick the one that has the features you need. This could well be a programming language or a free system like Euler Math Toolbox. If you want the greatest compatibility, you'd pick Octave or Scilab. The question really cannot be answered in that generality.
there is a lot of alternatives to the MATLAB I tried for ten years now :
Octave
scilab
freemat
and the best is
SAGE
which is a combination between more than 6 computing enviroments
you can download it as dvd file ( .iso) then using virtual machine you can run it
And, MatLab cannot replace any single software either! The only beauty MatLab has its enormous sets of tools and functionalities into one package,
For someone who look for higher speed package than matlan i recommend it++, armadiloo and aml++ libraries written in C++.
Scilab I have found to be effective, easy to use with lots of expansion abilities
But, Mahdi, the reason for the recommendation is not the similarity to Matlab. Rather, those are free and open packages that could be the future of scientific computation if only the community would stop worshiping Matlab.
The following website lists the best alternatives to the matlab
https://opensource.com/alternatives/matlab
I have used many of the alternatives cited in the answers above. For many reasons mostly aesthetic my personal preference is SciLab. But being honest with my students needs (Matlab is the industry standard) and collaboration I have shifted to Octave. There are many reports which confirm that as Octave uses scientific standard algebraic packages such as LAPACK, BLAS and GSL (some packages developed and maintained by the scientific community for over five decades) its performance is equivalent to Matlab and superior to some of the other alternatives. If performance is really an issue you should better dive deep into FORTRAN or C and understand your numerical methods and the various numerical packages and interfaces.
Matlab has many toolboxes that may be helpful to some, if that is the case and it saves the time feel free to use it. I find that Matlab ownership is too expensive for most projects and don't recommend it to my students. With some work they can accomplish anything important that they can otherwise accomplish with Matlab. In some cases using Octave gives them an edge in industry as they can install it on their computer without any licensing issues. As it is mostly compatible with Matlab all of the Matlab support forums are at the users disposal.
Python is the best alternative to Matlab because most of the libraries code is similar to Matlab. Scipy, numpy etc
Which of these programs (similar with Matlab) have a rational format ?