Numerical analysis is the study of algorithms for the problems of continuous mathematics .One of the earliest mathematical writings is the Babylonian tablet YBC 7289, which gives a sexagesimal numerical approximation of , the length of the diagonal in a unit square.... environment and programming language
Programming language
A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer.... . Maintained by The MathWorks
The MathWorks
The MathWorks, Inc. is a privately held, mid-size, multi-national corporation which specializes in technical computing computer software. Its main products include MATLAB?, Simulink?, and Stateflow.... , MATLAB allows easy matrix
Matrix (mathematics)
In mathematics, a matrix is a rectangular array of numbers, as shown at the right. In addition to a number of elementary, entrywise operations such as matrix addition a key notion is matrix multiplication.... manipulation, plotting of functions
Function (mathematics)
The mathematical concept of a function expresses dependence between two quantities, one of which is known and the other which is produced. A function associates a single output to each input element drawn from a fixed Set , such as the real numbers , although different inputs may have the same output.... and data, implementation of algorithm
Algorithm
In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing.... s, creation of user interface
User interface
The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools.... s, and interfacing with programs in other languages. Although it is numeric only, an optional toolbox uses the MuPAD symbolic engine, allowing access to computer algebra
Computer algebra system
A computer algebra system is a Application software that facilitates symbolic mathematics. The core functionality of a CAS is manipulation of mathematical expressions in symbolic form.... capabilities. An additional package, Simulink
Simulink
Simulink, developed by The MathWorks, is a commercial tool for modeling, simulating and analyzing multidomain dynamic systems. Its primary interface is a visual modeling and a customizable set of block library .... , adds graphical multidomain simulation and Model-Based Design for dynamic and embedded systems.
In 2004, MathWorks claimed that MATLAB was used by more than one million people across industry and the academic world.
AB (meaning "matrix laboratory") was invented in the late 1970s by Cleve Moler
Cleve Moler
Cleve Barry Moler is a mathematics and computer programming specializing in numerical analysis. In the mid to late 1970s, he was one of the authors of LINPACK and EISPACK, Fortran libraries for numerical computing.... , then chairman of the computer science
Computer science
Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems.... department at the University of New Mexico
University of New Mexico
The University of New Mexico is a public university in Albuquerque, New Mexico, New Mexico, USA. It was founded in 1889. It offers multiple bachelor's, master's, doctoral, and professional degree programs in all areas of the arts, sciences, and engineering.... .
Numerical analysis is the study of algorithms for the problems of continuous mathematics .One of the earliest mathematical writings is the Babylonian tablet YBC 7289, which gives a sexagesimal numerical approximation of , the length of the diagonal in a unit square.... environment and programming language
Programming language
A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer.... . Maintained by The MathWorks
The MathWorks
The MathWorks, Inc. is a privately held, mid-size, multi-national corporation which specializes in technical computing computer software. Its main products include MATLAB?, Simulink?, and Stateflow.... , MATLAB allows easy matrix
Matrix (mathematics)
In mathematics, a matrix is a rectangular array of numbers, as shown at the right. In addition to a number of elementary, entrywise operations such as matrix addition a key notion is matrix multiplication.... manipulation, plotting of functions
Function (mathematics)
The mathematical concept of a function expresses dependence between two quantities, one of which is known and the other which is produced. A function associates a single output to each input element drawn from a fixed Set , such as the real numbers , although different inputs may have the same output.... and data, implementation of algorithm
Algorithm
In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing.... s, creation of user interface
User interface
The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools.... s, and interfacing with programs in other languages. Although it is numeric only, an optional toolbox uses the MuPAD symbolic engine, allowing access to computer algebra
Computer algebra system
A computer algebra system is a Application software that facilitates symbolic mathematics. The core functionality of a CAS is manipulation of mathematical expressions in symbolic form.... capabilities. An additional package, Simulink
Simulink
Simulink, developed by The MathWorks, is a commercial tool for modeling, simulating and analyzing multidomain dynamic systems. Its primary interface is a visual modeling and a customizable set of block library .... , adds graphical multidomain simulation and Model-Based Design for dynamic and embedded systems.
In 2004, MathWorks claimed that MATLAB was used by more than one million people across industry and the academic world.
History
MATLAB (meaning "matrix laboratory") was invented in the late 1970s by Cleve Moler
Cleve Moler
Cleve Barry Moler is a mathematics and computer programming specializing in numerical analysis. In the mid to late 1970s, he was one of the authors of LINPACK and EISPACK, Fortran libraries for numerical computing.... , then chairman of the computer science
Computer science
Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems.... department at the University of New Mexico
University of New Mexico
The University of New Mexico is a public university in Albuquerque, New Mexico, New Mexico, USA. It was founded in 1889. It offers multiple bachelor's, master's, doctoral, and professional degree programs in all areas of the arts, sciences, and engineering.... . He designed it to give his students access to LINPACK
LINPACK
LINPACK is a software library_ for performing numerical linear algebra on digital computers. It was written in Fortran by Jack Dongarra, Jim Bunch, Cleve Moler, and Pete Stewart, and was intended for use on supercomputers in the 1970s and early 1980s.... and EISPACK
EISPACK
EISPACK is a software library for numerical computation of eigenvalues and eigenvectors of matrices, written in FORTRAN. It contains subroutines for calculating the eigenvalues of nine classes of matrix : complex general, complex Hermitian, real general, real symmetric, real symmetric band matrix, real symmetric tridiagonal, special real tri... without having to learn Fortran
Fortran
Fortran is a general-purpose programming language, procedural programming language, imperative programming language programming language that is especially suited to numerical analysis and scientific computing.... . It soon spread to other universities and found a strong audience within the applied mathematics
Applied mathematics
Applied mathematics is a branch of mathematics that concerns itself with the mathematical techniques typically used in the application of mathematical knowledge to other domains.... community. Jack Little
John N. Little
John N.Little is the president and co-founder of The MathWorks, and co-author of the company's first product MATLAB, rewritten in C language from the original FORTRAN version by Cleve Moler.... , an engineer, was exposed to it during a visit Moler made to Stanford University
Stanford University
Leland Stanford Junior University, commonly referred to as Stanford University or Stanford, is a private university research university located in Stanford, California, California, United States.... in 1983. Recognizing its commercial potential, he joined with Moler and Steve Bangert. They rewrote MATLAB in C
C (programming language)
C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system.... and founded The MathWorks
The MathWorks
The MathWorks, Inc. is a privately held, mid-size, multi-national corporation which specializes in technical computing computer software. Its main products include MATLAB?, Simulink?, and Stateflow.... in 1984 to continue its development. These rewritten libraries were known as JACKPAC. In 2000, MATLAB was rewritten to use a newer set of libraries for matrix manipulation, LAPACK
LAPACK
LAPACK, the Linear Algebra PACKage, is a software library for numerical computation originally written in Fortran and now written in Fortran.... .
Control engineering is the engineering discipline that applies control theory to design systems with predictable behaviors. The engineering activities focus on the mathematical modeling of systems of a diverse nature.... , Little's specialty, but quickly spread to many other domains. It is now also used in education, in particular the teaching of linear algebra
Linear algebra
Linear algebra is the branch of mathematics concerned with the study of Euclidean vectors, vector spaces , linear maps , and system of linear equations.... and numerical analysis
Numerical analysis
Numerical analysis is the study of algorithms for the problems of continuous mathematics .One of the earliest mathematical writings is the Babylonian tablet YBC 7289, which gives a sexagesimal numerical approximation of , the length of the diagonal in a unit square.... , and is popular amongst scientists involved with image processing
Image processing
In electrical engineering and computer science, image processing is any form of signal processing for which the input is an , such as photographs or video frame; the output of image processing can be either an image or a set of characteristics or parameters related to the image.... .
Syntax
MATLAB is built around the MATLAB language, sometimes called M-code or simply M. The simplest way to execute M-code is to type it in at the prompt, >> , in the Command Window, one of the elements of the MATLAB Desktop. In this way, MATLAB can be used as an interactive mathematical shell
Shell (computing)
In computing, a shell is a piece of software that provides an Interface for users. Typically, the term refers to an operating system shell which provides access to the services of a kernel .... . Sequences of commands can be saved in a text file, typically using the MATLAB Editor, as a script
Shell script
A shell script is a Scripting language written for the Shell , or command line interpreter, of an operating system. It is often considered a simple domain-specific programming language.... or encapsulated into a function
Functional programming
In computer science, functional programming is a programming paradigm that treats computation as the evaluation of function s and avoids program state and immutable object data.... , extending the commands available.
Variables
Variables are defined with the assignment operator, =. MATLAB is dynamically typed
Type system
In computer science, a type system may be defined as "a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute.".... , meaning that variables can be assigned without declaring their type, except if they are to be treated as symbolic objects, and that their type can change. Values can come from constants, from computation involving values of other variables, or from the output of a function. For example:
>> x = 17
x =
17
>> x = 'hat'
x =
hat
>> x = [3*4, pi/2]
x =
12.0000 1.5708
>> y = 3*sin(x)
y =
-1.6097 3.0000
Vectors/Matrices
MATLAB is a "Matrix Laboratory", and as such it provides many convenient ways for creating vectors, matrices, and multi-dimensional arrays. In the MATLAB vernacular, a vector refers to a one dimensional (1×N or N×1) matrix, commonly referred to as an array in other programming languages. A matrix generally refers to a 2-dimensional array, i.e. an m×n array where m and n are greater than 1. Arrays with more than two dimensions are referred to as multidimensional arrays.
MATLAB provides a simple way to define simple arrays using the syntax: init:increment:terminator. For instance:
>> array = 1:2:9
array =
1 3 5 7 9
defines a variable named 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 init value), increments with each step from the previous value by 2 (the increment value), and stops once it reaches (or to avoid exceeding) 9 (the terminator value).
>> array = 1:3:9
array =
1 4 7
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 = 1:5
ari =
1 2 3 4 5
assigns to the variable named ari an array with the values 1, 2, 3, 4, and 5, since the default value of 1 is used as the incrementer.
In computer science, an array is a data structure consisting of a group of element s that are accessed by index . In most programming languages each element has the same data type and the array occupies a contiguous area of computer memory.... is one-based, which is the usual convention for matrices
Matrix (mathematics)
In mathematics, a matrix is a rectangular array of numbers, as shown at the right. In addition to a number of elementary, entrywise operations such as matrix addition a key notion is matrix multiplication.... in mathematics. This is atypical for programming languages, whose arrays more often start with zero.
Matrices can be defined by separating the elements of a row with blank space or comma and using a semicolon to terminate each row. The list of elements should be surrounded by square brackets: []. Parentheses: are used to access elements and subarrays (they are also used to denote a function argument list).
In linear algebra, the identity matrix or unit matrix of size n is the n-by-n square matrix with ones on the main diagonal and zeros elsewhere.... 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)
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
Most MATLAB functions can accept matrices and will apply themselves to 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 using MATLAB's vectorized notation often produces code that is easier to read and faster to execute. This code, excerpted from the function magic.m, creates a magic square
Magic square
In recreational mathematics, a magic square of order n is an arrangement of n? numbers, usually distinct integers, in a square , such that the n numbers in all rows, all columns, and both diagonals sum to the same constant.... M for odd values of n (MATLAB function meshgrid is used here to
generate square matrices I and J containing 1:n).
[J,I] = meshgrid(1:n);
A = mod(I+J-(n+3)/2,n);
B = mod(I+2*J-2,n);
M = n*A + B + 1;
Semicolon
Unlike many other languages, where the semicolon is used to terminate commands, in MATLAB the semicolon serves to suppress the output of the line that it concludes.
That is to say: if a statement is not terminated with a semicolon, then the result of the statement is displayed. A statement that does not explicitly return a result, for instance 'clc', will behave the same whether or not a semicolon is included.
Additionally, a semicolon may be used within a vector or matrix declaration in order to separate rows (as opposed to a comma which separates columns within the same row). For example, a row vector will be declared as r = [1,2,3]. On the other hand a column vector will be c = [1;2;3].
Graphics
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
Sine wave
The sine wave or sinusoid is a function that occurs often in mathematics, physics, signal processing, hearing , electrical engineering, and many other fields.... :
Three-dimensional graphics can be produced using the functions surf, plot3 or mesh.
[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
mesh(X,Y,f);
axis([-10 10 -10 10 -0.3 1])
xlabel('')
ylabel('')
zlabel(' ')
hidden off
A wire frame model is a visual presentation of an electronic representation of a three dimensional or physical object used in 3D computer graphics.... 3D plot of the two-dimensional unnormalized sinc function
Sinc function
In mathematics, the sinc function, denoted by and sometimes as , has two definitions. In digital signal processing and information theory, the normalized sinc function is commonly defined by... :
This code produces a surface 3D plot of the two-dimensional unnormalized sinc function
Sinc function
In mathematics, the sinc function, denoted by and sometimes as , has two definitions. In digital signal processing and information theory, the normalized sinc function is commonly defined by... :
Limitations
For a long time there was criticism that because MATLAB is a proprietary
Proprietary software
Proprietary software is a term coined by advocates of the free software movement to describe computer software which is the legal property of one party.... product of The MathWorks, users are subject to vendor lock-in
Vendor lock-in
In economics, vendor lock-in, also known as proprietary lock-in, or customer lock-in, makes a customer dependent on a vendor for Product s and Service , unable to use another vendor without substantial switching barriers.... . Recently an additional tool called the MATLAB Builder under the Application Deployment tools section has been provided to deploy MATLAB functions as library files which can be used with .NET
.net
.net is a generic top-level domain used on the Internet's Domain Name System. The .net gTLD is currently operated by VeriSign. Registrations are processed via accredited registrars and internationalized domain names are also accepted .... or Java application building environment. But the drawback is that the computer where the application has to be deployed needs MCR (MATLAB Component Runtime) for the MATLAB files to function normally. MCR can be distributed freely with library files generated by the MATLAB compiler.
Fortran is a general-purpose programming language, procedural programming language, imperative programming language programming language that is especially suited to numerical analysis and scientific computing.... , Visual Basic
Visual Basic
'Visual Basic' is the third-generation programming language event-driven programming and integrated integrated development environment from Microsoft for its Component Object Model programming model.... and Ada
Ada (programming language)
Ada is a structured programming, statically typed, Imperative programming, and Object-oriented programming high-level language computer programming programming language, extended from Pascal and other languages.... , uses parentheses, e.g. y = f(x), for both indexing into an array and calling a function. Although this syntax can facilitate a switch between a procedure
Subroutine
In computer science, a subroutine or subprogram is a portion of computer code within a larger computer program, which performs a specific task and is relatively independent of the remaining code.... and a lookup table
Lookup table
In computer science, a lookup table is a data structure, usually an array or associative array, often used to replace a runtime computation with a simpler array indexing operation.... , both of which correspond to mathematical functions
Function (mathematics)
The mathematical concept of a function expresses dependence between two quantities, one of which is known and the other which is produced. A function associates a single output to each input element drawn from a fixed Set , such as the real numbers , although different inputs may have the same output.... , a careful reading of the code may be required to establish the intent.
MATLAB lacks a package system, like those found in modern languages such as Java and Python, where classes can be resolved unambiguously, e.g. Java's java.lang.System.out.println. In MATLAB, all functions share the global namespace, and precedence of functions with the same name is determined by the order in which they appear in the user's MATLAB path and other subtle rules. As such, two users may experience different results when executing what otherwise appears to be the same code when their paths are different.
Many functions have a different behavior with matrix and vector arguments. Since vectors are matrices of one row or one column, this can give unexpected results. For instance, function sum(A) where A is a matrix gives a row vector containing the sum of each column of A, and sum(v) where v is a column or row vector gives the sum of its elements; hence the programmer must be careful if the matrix argument of sum can degenerate into a single-row array. While sum and many similar functions accept an optional argument to specify a direction, others, like plot, do not, and require additional checks. There are other cases where MATLAB's interpretation of code may not be consistently what the user intended (e.g. how spaces are handled inside brackets as separators where it makes sense but not where it doesn't, or backslash escape
Escape character
In computing and telecommunication, an escape character is a single character which in a sequence of characters signifies that what is to follow takes an alternative interpretation.... sequences which are interpreted by some functions like fprintf but not directly by the language parser because it wouldn't be convenient for Windows directories). What might be considered as a convenience for commands typed interactively where the user can check that MATLAB does what the user wants may be less supportive of the need to construct reusable code
Reusability
In computer science and software engineering, reusability is the likelihood a segment of source code can be used again to add new functionalities with slight or no modification.... .
In computer science, an array is a data structure consisting of a group of element s that are accessed by index . In most programming languages each element has the same data type and the array occupies a contiguous area of computer memory.... is one-based which is the common convention for matrices
Matrix (mathematics)
In mathematics, a matrix is a rectangular array of numbers, as shown at the right. In addition to a number of elementary, entrywise operations such as matrix addition a key notion is matrix multiplication.... in mathematics, but does not accommodate any indexing convention of sequences that have zero or negative indices. For instance, in MATLAB the DFT
Discrete Fourier transform
In mathematics, the discrete Fourier transform is one of the specific forms of Fourier analysis. It transforms one function into another, which is called the frequency domain representation, or simply the DFT, of the original function .... (or FFT
Fast Fourier transform
A fast Fourier transform is an efficient algorithm to compute the discrete Fourier transform and its inverse. There are many distinct FFT algorithms involving a wide range of mathematics, from simple complex number to group theory and number theory; this article gives an overview of the available techniques and some of their general propert... ) is defined with the DC component at index 1 instead of index 0, which is not consistent with the standard definition of the DFT in any literature. This one-based indexing convention is hard coded into MATLAB, making it difficult for a user to define their own zero-based or negative indexed arrays to concisely model an idea having non-positive indices.
M-code written for a specific release of MATLAB often does not run with earlier releases as it may use some of the newer features. To give just one example: save('x','filename') saves the variable x in a file. The variable can be loaded with load('filename') in the same MATLAB release. However, if saved with MATLAB version 7 or later, it cannot be loaded with MATLAB version 6 or earlier. As workaround, in MATLAB version 7 save('x','filename','-v6') generates a file that can be read with version 6. However, executing save('x','filename','-v6') in version 6 causes an error message.
C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system.... or Fortran. A wrapper function is created allowing MATLAB data types to be passed and returned. The dynamically loadable object files created by compiling such functions are termed "MEX-files", although the file name extension depends on the operating system and processor.
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java .... or ActiveX
ActiveX
ActiveX is a component Object Model developed by Microsoft for Microsoft Windows. By using the Component Object Model runtime, developers can create Component-based software engineering that perform a particular function or a set of functions.... can be directly called from MATLAB and many MATLAB libraries (for example XML or SQL
SQL
SQL is a database computer language designed for the retrieval and management of data in relational database management systems , database schema creation and modification, and database object access control management.... support) are implemented as wrappers around Java or ActiveX libraries. Calling MATLAB from Java is more complicated, but can be done with MATLAB extension, which is sold separately by MathWorks.
Interactions with other Mathematics Software Packages
Maple is a general-purpose commercial computer algebra system. It was first developed in 1980 by the Symbolic Computation Group at the University of Waterloo in Waterloo, Ontario, Canada.... , MATLAB commands can be called from within the Maple Computer Algebra System, and vice versa.
Alternatives
Matlab has a number of competitors in the field of numerical analysis software. Two examples are GNU Octave
GNU Octave
Octave is a computer program for performing numerical analysis which is mostly compatible with MATLAB. It is part of the GNU Project. It is free software under the terms of the GNU General Public License.... and FreeMat
FreeMat
FreeMat is a free software open source numerical analysis environment and programming language, similar to MATLAB and GNU Octave. In addition to supporting many MATLAB functions and some IDL functionality, it features a codeless interface to external C programming language, C++, and Fortran code, further Parallel Distributed Processing , and... which are Open Source alternatives intended to provide, at least limited, compatibility with the Matlab language. A more complete list of Matlab's competitors, both open source and commercial, can be found at the Wikipedia list of numerical analysis software
List of numerical analysis software
Listed here are a number of computer programs used for performing numerical analysis calculations:* ADMB is a software suite for non-linear statistical modeling based on C++ which uses automatic differentiation.... and comparison of numerical analysis software
Comparison of numerical analysis software
The following tables provide a comparison of numerical analysis software.... .