Matlab is a widely used software suite that is aimed at scientific computing. It has a large set of functionality specifically for control engineering. For small companies, students, and individuals it can be expensive to purchase Matlab and the toolboxes that provide most of the useful functionality.
This page is dedicated to high-quality free and open source alternatives to Matlab functionality. This list includes other products from Mathworks that are not technically Matlab.
Matlab Language and Environment
- Octave: This is a direct replacement for Matlab code. There are dozens of packages available with some of the functionality found in Matlab toolboxes.
- Python: Popular scripting language with many packages for scientific computing.
- Julia: A newer scripting language that emphasizes speed. Also has many packages for scientific computing.
OpenModelica: Modeling and simulation suite based on the Modelica language. This is the same language used by almost every commercial modeling software suite, except Simulink. OpenModelica (OM) includes a graphical block diagram editor just like Simulink. There are some small differences to how it is used, but OM has the same functionality as Simulink. In addition to basic Simulink functionality, OM includes much of the functionality of:
- Simscape (including Electrical, Fluids, Multibody, Driveline)
- Code Generation (limited support)
The OM compiler can also be used in a Python, Julia, or Matlab environment.
System Identification Toolbox
Mataveid: This is a newer library developed by an individual. It doesn't include the same set of algorithms as the Matlab Sys ID toolbox, but it includes some extras as well (like SINDy).
SIPPY: Linear systems identification. This package has very poor documentation, but seems to be one of the only options for linear sys ID in Python.
Matlab Live Editor
Jupyter: Combine code and formatting in Notebooks in Jupyter. Great for quickly iterating ideas and sharing them. Works with Python and Julia, plus community support for Octave.