History
Origins
MATLAB was invented by mathematician and computer programmer Cleve Moler. The idea for MATLAB was based on his 1960s PhDCommercial 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. TheRelease history
For a complete list of changes of both MATLAB an official toolboxes, check MATLAB previous releases.Syntax
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 a "Hello, world!" program exists in MATLAB.Variables
Variables are defined using the assignment operator,=
.
MATLAB is a weakly typed programming language because 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 matrices in mathematics, unlike zero-based indexing commonly used in other programming languages such as C, C++, and []
. 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/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. It has unique properties, for example when the identity matrix represents a geometric transformation, the obje ...
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 for complex arrays):
>> A = ; 2 B = A.', C = transpose(A)
A =
1
2
B =
1 2
C =
1 2
>> D = , 3 ; 1, 5 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 mathematics, especially History of mathematics, historical and 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 diago ...
''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
In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
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''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
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. Offi ...
, virtual dispatch, packages, pass-by-value semantics, and pass-by-reference 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:
MATLAB supports three-dimensional graphics as well:
MATLAB supports developing graphical user interface
A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
(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 files (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 high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language".
Perl was developed ...
, Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
, 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 W ...
or .NET
The .NET platform (pronounced as "''dot net"'') is a free and open-source, managed code, managed computer software framework for Microsoft Windows, Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft emplo ...
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 data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
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
The MathWorks, Inc. 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
MATLAB was created in the 1 ...
, or using an undocumented mechanism called JMI (Java-to-MATLAB Interface), (which should not be confused with the unrelated Java Metadata Interface that is also called JMI). Official MATLAB API for Java was added in 2016.
As alternatives to the MuPAD based Symbolic Math Toolbox available from MathWorks, MATLAB can be connected to Maple or Mathematica.
Libraries also exist to import and export MathML.
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.
See also
* Comparison of numerical-analysis software
* List of numerical-analysis software
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 and information 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