Matlab Alternatives

From Control Engineering
Jump to navigation Jump to search

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.

Alternatives

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.

Simulink

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)
  • Stateflow
  • Simevents
  • Code Generation (limited support)

The OM compiler can also be used in a Python, Julia, or Matlab environment.

Control Toolbox

Octave

control

Python

Python Control

Julia

ControlSystems.jl

System Identification Toolbox

Octave

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).

Python

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.

Julia

ControlSystemIdentification.jl

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.