MATLAB (matrix laboratory) is a multi-paradigm numerical computing environment and proprietary programming language developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages, including C, C++, C#, Java, Fortran and Python.

Cleve Moler, the chairman of the computer science department at the University of New Mexico, started developing MATLAB in the late 1970s. He designed it to give his students access to LINPACK and EISPACK without them having to learn Fortran. It soon spread to other universities and found a strong audience within the applied mathematics community.

MATLAB was first adopted by researchers and practitioners in control engineering, Little's specialty, but quickly spread to many other domains. It is now also used in education, in particular the teaching of linear algebra, numerical analysis, and is popular amongst scientists involved in image processing.

The MATLAB application is built around the MATLAB scripting language. Common usage of the MATLAB application involves using the Command Window as an interactive mathematical shell or executing text files containing MATLAB code

**Variables **

Variables are defined using the assignment operator, **=** MATLAB is a weakly typed programming language because types are implicitly converted. It is an inferred typed language because 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.

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

**Structures **

MATLAB has structure data types.[15] 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.).
Unfortunately, MATLAB JIT does not support MATLAB structures, therefore just a simple bundling of various variables into a structure will come at a cost

**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. Functions are often case sensitive.

**Function handles **

MATLAB supports elements of lambda calculus 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 including classes, inheritance, 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)

**Classes and object-oriented programming **

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.

An example of a simple class is provided below.

classdef hello methods function greet(this) 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!