History
Origins
MATLAB was invented by mathematician and computer programmerCommercial development
MATLAB was first released as a commercial product in 1984 at the Automatic Control Conference inRecent history
Some especially large changes to the software were made with version 8 in 2012. The user interface was reworked andSyntax
The MATLAB application is built around the MATLAB programming language. Common usage of the MATLAB application involves using the "Command Window" as an interactive mathematical"Hello, world!" example
An example of aVariables
Variables are defined using the assignment operator,=
. MATLAB is a Vectors and matrices
A simple array is defined using the colon syntax: ''initial'':
''increment'':
''terminator''. For instance:
array
(or assigns a new value to an existing variable with the name array
) which is an array consisting of the values 1, 3, 5, 7, and 9. That is, the array starts at 1 (the ''initial'' value), increments with each step from the previous value by 2 (the ''increment'' value), and stops once it reaches (or is about to exceed) 9 (the ''terminator'' value).
The ''increment'' value can actually be left out of this syntax (along with one of the colons), to use a default value of 1.
ari
an array with the values 1, 2, 3, 4, and 5, since the default value of 1 is used as the increment.
Indexing is one-based, which is the usual convention for []
. Parentheses ()
are used to access elements and subarrays (they are also used to denote a function argument list).
2:4
, which evaluates to , 3, 4
The comma is a punctuation mark that appears in several variants in different languages. It has the same shape as an apostrophe or single closing quotation mark () in many typefaces, but it differs from them in being placed on the baseline (t ...
/code>. For example, a submatrix taken from rows 2 through 4 and columns 3 through 4 can be written as:
>> A(2:4,3:4)
ans =
11 8
7 12
14 1
A square identity matrix
In linear algebra, the identity matrix of size n is the n\times n square matrix with ones on the main diagonal and zeros elsewhere.
Terminology and notation
The identity matrix is often denoted by I_n, or simply by I if the size is immaterial ...
of size ''n'' can be generated using the function eye
, and matrices of any size with zeros or ones can be generated with the functions zeros
and ones
, respectively.
>> eye(3,3)
ans =
1 0 0
0 1 0
0 0 1
>> zeros(2,3)
ans =
0 0 0
0 0 0
>> ones(2,3)
ans =
1 1 1
1 1 1
Transposing a vector or a matrix is done either by the function transpose
or by adding dot-prime after the matrix (without the dot, prime will perform conjugate transpose
In mathematics, the conjugate transpose, also known as the Hermitian transpose, of an m \times n complex matrix \boldsymbol is an n \times m matrix obtained by transposing \boldsymbol and applying complex conjugate on each entry (the complex c ...
for complex arrays):
>> A = ; 2 B = A.', C = transpose(A)
A =
1
2
B =
1 2
C =
1 2
>> D = , 3 ; 1, 5
The comma is a punctuation mark that appears in several variants in different languages. It has the same shape as an apostrophe or single closing quotation mark () in many typefaces, but it differs from them in being placed on the baseline of ...
D.'
D =
0 3
1 5
ans =
0 1
3 5
Most functions accept arrays as input and operate element-wise on each element. For example, mod(2*J,n)
will multiply every element in ''J'' by 2, and then reduce each element modulo ''n''. MATLAB does include standard for
and while
loops, but (as in other similar applications such as APL and R), using the vectorized notation is encouraged and is often faster to execute. The following code, excerpted from the function ''magic.m'', creates a magic square
In recreational mathematics, a square array of numbers, usually positive integers, is called a magic square if the sums of the numbers in each row, each column, and both main diagonals are the same. The 'order' of the magic square is the number ...
''M'' for odd values of ''n'' (MATLAB function meshgrid
is used here to generate square matrices and containing ):
,I= meshgrid(1:n);
A = mod(I + J - (n + 3) / 2, n);
B = mod(I + 2 * J - 2, n);
M = n * A + B + 1;
Structures
MATLAB supports structure data types. Since all variables in MATLAB are arrays, a more adequate name is "structure array", where each element of the array has the same field names. In addition, MATLAB supports dynamic field names (field look-ups by name, field manipulations, etc.).
Functions
When creating a MATLAB function, the name of the file should match the name of the first function in the file. Valid function names begin with an alphabetic character, and can contain letters, numbers, or underscores. Variables and functions are case sensitive.
Function handles
MATLAB supports elements of lambda calculus
Lambda calculus (also written as ''λ''-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution. It is a universal model of computation t ...
by introducing function handles, or function references, which are implemented either in .m files or anonymous/nested functions.
Classes and object-oriented programming
MATLAB supports object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
including classes, inheritance
Inheritance is the practice of receiving private property, titles, debts, entitlements, privileges, rights, and obligations upon the death of an individual. The rules of inheritance differ among societies and have changed over time. Offici ...
, virtual dispatch, packages, pass-by-value semantics, and pass-by-reference
In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a ''parameter-passing strategy'' that defines the kind of value that is passed to the ...
semantics. However, the syntax and calling conventions are significantly different from other languages. MATLAB has value classes and reference classes, depending on whether the class has ''handle'' as a super-class (for reference classes) or not (for value classes).
Method call behavior is different between value and reference classes. For example, a call to a method:
object.method();
can alter any member of ''object'' only if ''object'' is an instance of a reference class, otherwise value class methods must return a new instance if it needs to modify the object.
An example of a simple class is provided below:
classdef Hello
methods
function greet(obj)
disp('Hello!')
end
end
end
When put into a file named hello.m
, this can be executed with the following commands:
>> x = Hello();
>> x.greet();
Hello!
Graphics and graphical user interface programming
MATLAB has tightly integrated graph-plotting features. For example, the function ''plot'' can be used to produce a graph from two vectors ''x'' and ''y''. The code:
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
produces the following figure of the sine function
In mathematics, sine and cosine are trigonometric functions of an angle. The sine and cosine of an acute angle are defined in the context of a right triangle: for the specified angle, its sine is the ratio of the length of the side that is ...
:
MATLAB supports three-dimensional graphics as well:
MATLAB supports developing graphical user interface
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows User (computing), users to Human–computer interaction, interact with electronic devices through graphical icon (comp ...
(GUI) applications. UIs can be generated either programmatically or using visual design environments such as ''GUIDE'' and ''App Designer''.
MATLAB and other languages
MATLAB can call functions and subroutines written in the programming languages C or Fortran. A wrapper function is created allowing MATLAB data types to be passed and returned. MEX file A MEX file is a type of computer file that provides an interface between MATLAB or Octave
In music, an octave ( la, octavus: eighth) or perfect octave (sometimes called the diapason) is the interval between one musical pitch and another with ...
s (MATLAB executables) are the dynamically loadable object files created by compiling such functions. Since 2014 increasing two-way interfacing with Python was being added.
Libraries written in Perl
Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
, Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
, ActiveX
ActiveX is a deprecated software framework created by Microsoft that adapts its earlier Component Object Model (COM) and Object Linking and Embedding (OLE) technologies for content downloaded from a network, particularly from the World Wide Web. ...
or .NET can be directly called from MATLAB, and many MATLAB libraries (for example XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. ...
or SQL support) are implemented as wrappers around Java or ActiveX libraries. Calling MATLAB from Java is more complicated, but can be done with a MATLAB toolbox which is sold separately by MathWorks
MathWorks is an American privately held corporation that specializes in mathematical computing software. Its major products include MATLAB and Simulink, which support data analysis and simulation.
History
The company's key product, MATLAB, was ...
, or using an undocumented mechanism called JMI (Java-to-MATLAB Interface), (which should not be confused with the unrelated Java Metadata Interface
Given that metadata is a set of descriptive, structural and administrative data about a group of computer data (for example such as a database schema), Java Metadata Interface (or JMI) is a platform-neutral specification that defines the creatio ...
that is also called JMI). Official MATLAB API for Java was added in 2016.
As alternatives to the MuPAD
MuPAD is a computer algebra system (CAS). Originally developed by the MuPAD research group at the University of Paderborn, Germany, development was taken over by the company SciFace Software GmbH & Co. KG in cooperation with the MuPAD research gro ...
based Symbolic Math Toolbox available from MathWorks, MATLAB can be connected to Maple
''Acer'' () is a genus of trees and shrubs commonly known as maples. The genus is placed in the family Sapindaceae.Stevens, P. F. (2001 onwards). Angiosperm Phylogeny Website. Version 9, June 2008 nd more or less continuously updated since ht ...
or Mathematica
Wolfram Mathematica is a software system with built-in libraries for several areas of technical computing that allow machine learning, statistics, symbolic computation, data manipulation, network analysis, time series analysis, NLP, optimi ...
.
Libraries also exist to import and export MathML
Mathematical Markup Language (MathML) is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide We ...
.
Relations to US sanctions
In 2020, MATLAB withdrew services from two Chinese universities as a result of US sanctions. The universities said this will be responded to by increased use of open-source alternatives and by developing domestic alternatives.
Release history
MATLAB is updated twice per year. In addition to new features and other improvements, each release has new bug fixes and smaller changes.
The number (or release number) is the version reported by Concurrent License Manager program FLEXlm. For a complete list of changes of both MATLAB and official toolboxes, consult the MATLAB release notes.
See also
* Comparison of numerical-analysis software
The following tables provide a comparison of numerical-analysis software.
Applications
General
Operating system support
The operating systems the software can run on natively (without emulation).
Language features
Colors indicat ...
* List of numerical-analysis software
Listed here are notable end-user computer applications intended for use with numerical or data analysis:
Numerical-software packages
General-purpose computer algebra systems
Interface-oriented
Language-oriented
Historically significa ...
Notes
Further reading
*
*
*
*
External links
*
*
{{DEFAULTSORT:Matlab
1970s software
Computer-related introductions in the 1970s
Array programming languages
Articles with example MATLAB/Octave code
Proprietary software programmed in C
Computer algebra system software for Linux
Computer algebra system software for macOS
Computer algebra system software for Windows
Computer algebra systems
Computer vision software
Cross-platform software
Data mining and machine learning software
Data visualization software
Data-centric programming languages
Dynamically typed programming languages
Econometrics software
High-level programming languages
IRIX software
Linear algebra
Mathematical optimization software
Numerical analysis software for Linux
Numerical analysis software for macOS
Numerical analysis software for Windows
Numerical linear algebra
Numerical programming languages
Numerical software
Parallel computing
Plotting software
Proprietary commercial software for Linux
Proprietary cross-platform software
Regression and curve fitting software
Software modeling language
Statistical programming languages
Time series software
Domain-specific programming languages