Content deleted Content added
AdaHephais (talk | contribs) Improve presentation and add internal link Tags: Visual edit Mobile edit Mobile web edit Advanced mobile edit |
m Removing Category:Proprietary cross-platform software per Wikipedia:Categories for discussion/Log/2025 July 20#Category:Proprietary software by operating system |
||
(38 intermediate revisions by 16 users not shown) | |||
Line 3:
{{For|the geographical region|Matlab (Bangladesh)}}
{{Distinguish|MATHLAB}}
{{Infobox software▼
| name = MATLAB (software)▼
| logo size = 150px
| logo caption = L-shaped membrane logo<ref>{{cite web|title=The L-Shaped Membrane|url=http://www.mathworks.com/company/newsletters/articles/the-l-shaped-membrane.html|publisher=MathWorks|access-date=February 7, 2014|year=2003|archive-date=April 23, 2019|archive-url=https://web.archive.org/web/20190423053626/https://www.mathworks.com/company/newsletters/articles/the-l-shaped-membrane.html|url-status=dead}}</ref>▼
| screenshot = ▼
| caption = MATLAB R2015b running on Windows 10▼
| developer = [[MathWorks]]▼
| released = {{Start date and age|1984}}▼
| latest release version = {{wikidata|property|edit|reference|P548=Q2804309|P348}}▼
| latest release date = {{start date and age|{{wikidata|qualifier|mdy|single|P548=Q2804309|P348|P577}}}}▼
| latest preview version = {{wikidata|property|edit|reference|P548=Q2122918|P348}}▼
| latest preview date = ▼
| programming language = [[C (programming language)|C]]/[[C++]], MATLAB▼
| operating system = [[Microsoft Windows|Windows]], [[macOS]], and [[Linux]]<ref>{{cite web|url=http://www.mathworks.com/products/availability/index.html#ML|title=System Requirements and Platform Availability|publisher=MathWorks|access-date=August 14, 2013|archive-date=October 13, 2016|archive-url=https://web.archive.org/web/20161013171819/http://www.mathworks.com/products/availability/index.html#ML|url-status=dead}}</ref><ref>{{Cite web|title=Platform Road Map for MATLAB and Simulink Product Families|url=https://de.mathworks.com/support/requirements/platform-road-map.html|access-date=2021-12-22|website=de.mathworks.com|language=en}}</ref>▼
| platform = [[IA-32]], [[x86-64]], [[ARM64]]▼
| genre = [[List of numerical-analysis software|Numerical computing]]▼
| license = [[Proprietary software|Proprietary]] [[commercial software]]▼
| website = {{URL|https://www.mathworks.com/products/matlab.html|mathworks.com}}▼
}}▼
{{Infobox programming language
| name = MATLAB (programming language)
Line 16 ⟶ 36:
| typing = [[dynamic typing|dynamic]], [[weak typing|weak]]
| scope =
| dialects =
| influenced by = {{startflatlist}}
Line 30 ⟶ 49:
* [[GNU Octave|Octave]]<ref name="Octave">{{cite web |url=http://jbrwww.che.wisc.edu/tech-reports/twmcc-2001-03.pdf |first=John W. |last=Eaton |title=Octave: Past, Present, and Future |work=Texas-Wisconsin Modeling and Control Consortium |date=May 21, 2001 |access-date=December 1, 2016 |archive-url=https://web.archive.org/web/20170809034614/http://jbrwww.che.wisc.edu/tech-reports/twmcc-2001-03.pdf |archive-date=August 9, 2017 |url-status=dead }}</ref>
* [[Scilab]]<ref name="Scilab">{{cite web |url=https://www.scilab.org/scilab/history |title=History |publisher=Scilab |access-date=December 1, 2016 |archive-url=https://web.archive.org/web/20161201171246/http://www.scilab.org/scilab/history |archive-date=December 1, 2016 |url-status=dead }}</ref>
{{endflatlist}}
| operating system =
| license =
| file ext = <code>.m</code>, <code>.p</code>,<ref>{{cite web|title=Protect Your Source Code|url=https://www.mathworks.com/help/matlab/matlab_prog/protect-your-source-code.html|publisher=MathWorks|access-date=November 1, 2019}}</ref> <code>.mex*</code>,<ref>{{cite web|title=MEX Platform Compatibility|url=https://www.mathworks.com/help/matlab/matlab_external/platform-compatibility.html|publisher=MathWorks|access-date=November 1, 2019}}</ref> <code>.mat</code>,<ref>{{cite web|title=MAT-File Versions|url=https://www.mathworks.com/help/matlab/import_export/mat-file-versions.html|publisher=MathWorks|access-date=November 1, 2019}}</ref> <code>.fig</code>,<ref>{{cite web|title=Save Figure to Reopen in MATLAB Later|url=https://www.mathworks.com/help/matlab/creating_plots/save-figure-to-reopen-in-matlab-later.html|publisher=MathWorks|access-date=November 1, 2019}}</ref> <code>.mlx</code>,<ref>{{cite web|title=Live Code File Format (.mlx)|url=https://www.mathworks.com/help/matlab/matlab_prog/live-script-file-format.html|publisher=MathWorks|access-date=November 1, 2019}}</ref> <code>.mlapp</code>,<ref>{{cite web|title=MATLAB App Designer|url=https://www.mathworks.com/help/matlab/ref/appdesigner.html|publisher=MathWorks|access-date=November 1, 2019}}</ref> <code>.mltbx</code>,<ref>{{cite web|title=Toolbox Distribution|url=https://www.mathworks.com/help/matlab/creating-help.html|publisher=MathWorks|access-date=November 1, 2019}}</ref> <code>.mlappinstall</code>,<ref>{{cite web|title=MATLAB App Installer File|url=https://www.mathworks.com/help/matlab/creating_guis/what-is-an-app.html|publisher=MathWorks|access-date=November 1, 2019|archive-date=January 17, 2014|archive-url=https://web.archive.org/web/20140117002416/https://www.mathworks.com/help/matlab/creating_guis/what-is-an-app.html|url-status=dead}}</ref> <code>.mlpkginstall</code><ref>{{cite web|title=Support Package Installation|url=https://www.mathworks.com/help/matlab/matlab_external/support-package-installation.html|publisher=MathWorks|access-date=November 1, 2019|archive-date=October 6, 2014|archive-url=https://web.archive.org/web/20141006135910/https://www.mathworks.com/help/matlab/matlab_external/support-package-installation.html|url-status=dead}}</ref>
| website = {{
| wikibooks = MATLAB Programming
▲}}
▲{{Infobox software
▲| name = MATLAB (software)
▲| logo = [[File:Matlab Logo.png|121px]]
▲| logo caption = L-shaped membrane logo<ref>{{cite web|title=The L-Shaped Membrane|url=http://www.mathworks.com/company/newsletters/articles/the-l-shaped-membrane.html|publisher=MathWorks|access-date=February 7, 2014|year=2003}}</ref>
▲| screenshot =
▲| caption = MATLAB R2015b running on Windows 10
▲| developer = [[MathWorks]]
▲| released = {{Start date and age|1984}}
▲| latest release version = {{wikidata|property|edit|reference|P548=Q2804309|P348}}
▲| latest release date = {{start date and age|{{wikidata|qualifier|mdy|single|P548=Q2804309|P348|P577}}}}
▲| latest preview version = {{wikidata|property|edit|reference|P548=Q2122918|P348}}
▲| latest preview date =
▲| programming language = [[C (programming language)|C]]/[[C++]], MATLAB
▲| operating system = [[Microsoft Windows|Windows]], [[macOS]], and [[Linux]]<ref>{{cite web|url=http://www.mathworks.com/products/availability/index.html#ML|title=System Requirements and Platform Availability|publisher=MathWorks|access-date=August 14, 2013}}</ref><ref>{{Cite web|title=Platform Road Map for MATLAB and Simulink Product Families|url=https://de.mathworks.com/support/requirements/platform-road-map.html|access-date=2021-12-22|website=de.mathworks.com|language=en}}</ref>
▲| platform = [[IA-32]], [[x86-64]], [[ARM64]]
▲| genre = [[List of numerical-analysis software|Numerical computing]]
▲| license = [[Proprietary software|Proprietary]] [[commercial software]]
▲| website = {{URL|https://www.mathworks.com/products/matlab.html|mathworks.com}}
}}
'''MATLAB''' (
Although MATLAB is intended primarily for numeric computing, an optional toolbox uses the [[MuPAD]] [[computer algebra system|symbolic engine]] allowing access to [[symbolic computing]] abilities. An additional package, [[Simulink]], adds graphical multi-___domain simulation and [[model-based design]] for [[dynamical system|dynamic]] and [[embedded system]]s.
{{As of|2020}}, MATLAB has more than four million users worldwide.<ref name="mathworksCompanyOverview">{{cite web|title=Company Overview|url=https://uk.mathworks.com/content/dam/mathworks/handout/2020-company-factsheet-8-5x11-8282v20.pdf|author=The MathWorks|date=February 2020|access-date=May 11, 2020|archive-date=July 19, 2020|archive-url=https://web.archive.org/web/20200719211946/https://uk.mathworks.com/content/dam/mathworks/handout/2020-company-factsheet-8-5x11-8282v20.pdf|url-status=dead}}</ref> They come from various backgrounds of [[engineering]], [[science]], and [[economics]]. {{As of|2017}}, more than 5000 global colleges and universities use MATLAB to support instruction and research.<ref>{{Cite web |title=Current number of matlab users worldwide |url=https://www.mathworks.com/matlabcentral/answers/77436-current-number-of-matlab-users-worldwide |date=2017-11-09 |access-date=2023-04-26 |website=Mathworks}}</ref>
==History==
Line 73 ⟶ 72:
In the 1980s, Cleve Moler met [[John N. Little]]. They decided to reprogram MATLAB in [[C (programming language)|C]] and market it for the [[IBM]] [[Desktop computer|desktops]] that were replacing [[Mainframe computer|mainframe computers]] at the time.<ref name="Chonacky Winch 2005 pp. 9–10" /> John Little and programmer Steve Bangert re-programmed MATLAB in C, created the MATLAB programming language, and developed features for toolboxes.<ref name="hobby" />
===Commercial development===
Line 91 ⟶ 88:
==Release history==
For a complete list of changes of both MATLAB an official toolboxes, check MATLAB previous releases
{|class="sortable wikitable"
|+ '''Versions of the MATLAB product family'''
Line 347 ⟶ 344:
|24.2
|-
!R2025a
|25.1
|25.1
|2025
|-
|
|}
Line 352 ⟶ 355:
The MATLAB application is built around the MATLAB programming language.
Common usage of the MATLAB application involves using the "[[Command-line interface|Command Window]]" as an interactive mathematical [[command line interface|shell]] or executing [[Text file|text files]] containing MATLAB code.<ref>{{cite web|url=http://www.mathworks.com/help/matlab/index.html|title=MATLAB Documentation
=== "Hello, world!" example ===
Line 368 ⟶ 371:
===Variables===
[[Variable (computer science)|Variables]] are defined using the [[Assignment (computer science)|assignment]] operator, <code>=</code>.
Variables are defined using the assignment operator, <code>=</code>. MATLAB is a [[Strong and weak typing|weakly typed]] programming language because types are implicitly converted.<ref>{{cite web|title=Comparing MATLAB with Other OO Languages|url=http://www.mathworks.com/help/matlab/matlab_oop/matlab-vs-other-oo-languages.html|work=MATLAB|publisher=MathWorks|access-date=August 14, 2013}}</ref> 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,<ref>{{cite web|title=Create Symbolic Variables and Expressions|url=http://www.mathworks.com/help/symbolic/creating-symbolic-variables-and-expressions.html|work=Symbolic Math Toolbox|publisher=MathWorks|access-date=August 14, 2013}}</ref> and that their type can change. Values can come from [[constant (computer science)|constant]]s, from computation involving values of other variables, or from the output of a function. For example:▼
▲
Values can come from [[constant (computer science)|constant]]s, from computation involving values of other variables, or from the output of a [[Function (computer programming)|function]].
For example:
<syntaxhighlight lang="matlabsession">
>> x = 17
Line 404 ⟶ 413:
assigns to the variable named <code>ari</code> an array with the values 1, 2, 3, 4, and 5, since the default value of 1 is used as the increment.
[[One-based indexing|Indexing]] is one-based,<ref>{{cite web|title=Matrix Indexing|url=http://www.mathworks.com/help/matlab/math/matrix-indexing.html|publisher=MathWorks|access-date=August 14, 2013|archive-date=August 9, 2018|archive-url=https://web.archive.org/web/20180809011619/http://www.mathworks.com/help/matlab/math/matrix-indexing.html|url-status=dead}}</ref> which is the usual convention for [[matrix (mathematics)|matrices]] in mathematics, unlike zero-based indexing commonly used in other programming languages such as C, [[C++]], and [[Java (programming language)|Java]].
Matrices can be defined by separating the elements of a row with blank space or comma and using a semicolon to separate the rows. The list of elements should be surrounded by square brackets <code>[]</code>. Parentheses <code>()</code> are used to access elements and subarrays (they are also used to denote a function argument list).
Line 478 ⟶ 487:
=== Structures ===
MATLAB supports structure data types.<ref>{{cite web|title=Structures|url=http://www.mathworks.com/help/matlab/structures.html|publisher=MathWorks|access-date=August 14, 2013|archive-date=July 13, 2019|archive-url=https://web.archive.org/web/20190713130421/https://www.mathworks.com/help/matlab/structures.html|url-status=dead}}</ref> 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<ref>{{cite web|title=Generate Field Names from Variables|url=http://www.mathworks.com/help/matlab/matlab_prog/generate-field-names-from-variables.html|publisher=MathWorks|access-date=August 14, 2013|archive-date=December 5, 2019|archive-url=https://web.archive.org/web/20191205162532/https://www.mathworks.com/help/matlab/matlab_prog/generate-field-names-from-variables.html|url-status=dead}}</ref> (field look-ups by name, field manipulations, etc.).
=== Functions ===
Line 501 ⟶ 510:
=== Function handles ===
MATLAB supports elements of [[lambda calculus]] by introducing function handles,<ref>{{cite web|title=Function Handles|url=http://www.mathworks.com/help/matlab/function-handles.html|publisher=MathWorks|access-date=August 14, 2013|archive-date=July 19, 2020|archive-url=https://web.archive.org/web/20200719160702/https://www.mathworks.com/help/matlab/function-handles.html|url-status=dead}}</ref> or function references, which are implemented either in .m files or anonymous<ref>{{cite web|title=Anonymous Functions|url=http://www.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html|publisher=MathWorks|access-date=August 14, 2013}}{{Dead link|date=July 2025 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>/nested functions.<ref>{{cite web|title=Nested Functions|url=http://www.mathworks.com/help/matlab/matlab_prog/nested-functions.html|publisher=MathWorks.|access-date=August 14, 2013|archive-date=July 19, 2020|archive-url=https://web.archive.org/web/20200719221302/https://www.mathworks.com/help/matlab/matlab_prog/nested-functions.html|url-status=dead}}</ref>
=== Classes and object-oriented programming ===
MATLAB supports [[object-oriented programming]] including classes, [[inheritance (object-oriented programming)|inheritance]], virtual dispatch, packages, [[pass-by-value]] semantics, and [[pass-by-reference]] semantics.<ref>{{cite web|url=http://www.mathworks.com/help/matlab/object-oriented-programming.html
Method call behavior is different between value and reference classes. For example, a call to a method:
Line 668 ⟶ 677:
|}
MATLAB supports developing [[graphical user interface]] (GUI) applications.<ref>{{cite web | url=http://www.mathworks.com/discovery/matlab-gui.html | title=MATLAB GUI | publisher=MathWorks | date=April 30, 2011 | access-date=August 14, 2013 | archive-date=January 17, 2022 | archive-url=https://web.archive.org/web/20220117115213/https://www.mathworks.com/discovery/matlab-gui.html | url-status=dead }}</ref> UIs can be generated either programmatically or using visual design environments such as ''GUIDE'' and ''App Designer''.<ref>{{cite web|title=Create a Simple GUIDE GUI|url=http://www.mathworks.com/help/matlab/creating_guis/about-the-simple-guide-gui-example.html|publisher=MathWorks|access-date=August 14, 2014|archive-date=October 5, 2014|archive-url=https://web.archive.org/web/20141005205720/http://www.mathworks.com/help/matlab/creating_guis/about-the-simple-guide-gui-example.html|url-status=dead}}</ref><ref>{{cite web|title=MATLAB App Designer|url=https://www.mathworks.com/products/matlab/app-designer.html|publisher=MathWorks|access-date=November 1, 2019}}</ref>
== MATLAB and other languages ==
MATLAB can call functions and subroutines written in the programming languages [[C (programming language)|C]] or [[Fortran]].<ref>{{cite web|title=Application Programming Interfaces to MATLAB|url=http://www.mathworks.com/help/matlab/programming-interfaces-for-c-c-fortran-com.html|publisher=MathWorks|access-date=August 14, 2013|archive-date=September 15, 2017|archive-url=https://web.archive.org/web/20170915020649/http://www.mathworks.com/help/matlab/programming-interfaces-for-c-c-fortran-com.html|url-status=dead}}</ref> A wrapper function is created allowing MATLAB data types to be passed and returned. [[MEX file]]s (MATLAB executables) are the dynamically loadable object files created by compiling such functions.<ref>{{cite web|title=Create MEX-Files|url=http://www.mathworks.com/help/matlab/create-mex-files.html|publisher=MathWorks|access-date=August 14, 2013|archive-date=March 3, 2014|archive-url=https://web.archive.org/web/20140303193228/http://www.mathworks.com/help/matlab/create-mex-files.html|url-status=dead}}</ref><ref>{{cite web|title=Connecting C and Matlab | last=Spielman | first=Dan | publisher=Yale University, Computer Science Department | date=February 10, 2004 | url=http://www.cs.yale.edu/homes/spielman/ECC/cMatlab.html | access-date=May 20, 2008}}</ref> Since 2014 increasing two-way interfacing with [[Python (programming language)|Python]] was being added.<ref>{{cite web|title=MATLAB Engine for Python|url=http://www.mathworks.com/help/matlab/matlab-engine-for-python.html|publisher=MathWorks|access-date=June 13, 2015}}{{Dead link|date=July 2025 |bot=InternetArchiveBot |fix-attempted=yes }}</ref><ref>{{cite web|title=Call Python Libraries|url=http://www.mathworks.com/help/matlab/call-python-libraries.html|publisher=MathWorks|access-date=June 13, 2015|archive-date=December 5, 2019|archive-url=https://web.archive.org/web/20191205162912/https://www.mathworks.com/help/matlab/call-python-libraries.html|url-status=dead}}</ref>
Libraries written in [[Perl]], [[Java (programming language)|Java]], [[ActiveX]] or [[.NET Framework|.NET]] can be directly called from MATLAB,<ref>{{cite web|title=External Programming Language Interfaces|url=http://www.mathworks.com/help/matlab/external-interfaces.html|publisher=MathWorks|access-date=August 14, 2013|archive-date=March 11, 2014|archive-url=https://web.archive.org/web/20140311003229/http://www.mathworks.com/help/matlab/external-interfaces.html|url-status=dead}}</ref><ref>{{cite web|title=Call Perl script using appropriate operating system executable|url=http://www.mathworks.com/help/matlab/ref/perl.html|publisher=MathWorks|access-date=November 7, 2013|archive-date=December 5, 2019|archive-url=https://web.archive.org/web/20191205162718/https://www.mathworks.com/help/matlab/ref/perl.html|url-status=dead}}</ref> and many MATLAB libraries (for example [[XML]] 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<ref>{{cite web |url=http://www.mathworks.com/products/javabuilder/ |title=MATLAB Builder JA |publisher=MathWorks |access-date=June 7, 2010 |archive-date=June 4, 2011 |archive-url=https://web.archive.org/web/20110604183233/http://www.mathworks.com/products/javabuilder/ |url-status=dead }}</ref> which is sold separately by [[MathWorks]], or using an undocumented mechanism called JMI (Java-to-MATLAB Interface),<ref>{{cite web |url=http://undocumentedmatlab.com/blog/jmi-java-to-matlab-interface/ |first=Yair |last=Altman |title=Java-to-Matlab Interface |publisher=Undocumented Matlab |date=April 14, 2010 |access-date=June 7, 2010 |archive-date=September 5, 2015 |archive-url=https://web.archive.org/web/20150905153327/http://undocumentedmatlab.com/blog/jmi-java-to-matlab-interface |url-status=dead }}</ref><ref>{{cite web|title=matlabcontrol JMI|url=https://code.google.com/p/matlabcontrol/wiki/JMI|first=Joshua |last=Kaplan}}</ref> (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.<ref name="MATLAB Engine API for Java">{{cite web|title=MATLAB Engine API for Java|url=http://www.mathworks.com/help/matlab/matlab-engine-api-for-java.html|publisher=MathWorks|access-date=September 15, 2016|archive-date=September 19, 2020|archive-url=https://web.archive.org/web/20200919194505/https://www.mathworks.com/help/matlab/matlab-engine-api-for-java.html|url-status=dead}}</ref>
As alternatives to the [[MuPAD]] based Symbolic Math Toolbox available from MathWorks, MATLAB can be connected to [[Maple (software)|Maple]] or [[Mathematica]].<ref>{{cite web|title=MaMa: Calling MATLAB from Mathematica with MathLink|url=http://library.wolfram.com/infocenter/MathSource/618/|publisher=Wolfram Library Archive|first=Roger |last=Germundsson |work=[[Wolfram Research]] |date=September 30, 1998}}</ref><ref>{{cite web|title=MATLink: Communicate with MATLAB from Mathematica|url=http://matlink.org/|access-date=August 14, 2013|author1=rsmenon |author2=szhorvat|year=2013}}</ref>
Line 738 ⟶ 747:
[[Category:Cross-platform software]]
[[Category:Data mining and machine learning software]]
[[Category:Data and information visualization software]]
[[Category:Data-centric programming languages]]
[[Category:Dynamically typed programming languages]]
Line 755 ⟶ 764:
[[Category:Plotting software]]
[[Category:Proprietary commercial software for Linux]]
[[Category:Regression and curve fitting software]]
[[Category:Software modeling language]]
|