MATLAB Reference

This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production.

The reference material consulted while preparing these pages is listed in the section bibliography.

What MATLAB is

MATLAB, short for "matrix laboratory", is a matrix-oriented programming language and an interactive environment for numerical computing, visualization and programming. Cleve Moler created it in the late 1970s as an interactive front end to the Fortran libraries LINPACK and EISPACK, and Jack Little, Cleve Moler and Steve Bangert founded MathWorks in 1984 to commercialise it (Moler and Little, "A History of MATLAB", 2020). Its central object is the array: a scalar is a 1-by-1 array, and operators, functions and indexing are designed to work on whole arrays at once.

This section is a learning-oriented reference for the language and its basic usage, written against MATLAB R2026b. It covers base MATLAB only. The add-on products that MathWorks sells separately (the toolboxes, such as Statistics and Machine Learning, Deep Learning, Signal Processing or Image Processing) and Simulink are not documented here; Toolboxes and Add-On Products lists them with a short description and a link to each official page. Every example uses base MATLAB only. The maths, graphics and data pages document what a learner of the language needs to use base MATLAB; they are not a numerical-methods course.

Version baseline

MathWorks ships two releases a year: an "a" release in spring (March to May) and a "b" release in September. R2026b was announced on 2026-09-28 and is the current release; the release notes at mathworks.com/help/matlab/release-notes.html had no R2027a entry when this section was checked on 2026-10-22. If you read this after R2027a is out, the language described here is still valid, but newer additions are not marked; each page says in which release a feature appeared so that you can tell whether your release has it.

What R2026b changed in the platform, as it affects this section:

  • MATLAB no longer installs Java on Windows and Linux; you add OpenJDK yourself.

  • Live scripts save as plain-text .m files by default.

  • .mltbx files are now called package files, File Exchange is a default package repository, and projects use a matlab.toml definition file.

  • New markdowndisp function and ANSI styling in the Command Window.

The table lists the base-MATLAB changes that matter to a learner of the language, with the release in which each arrived. Each is stated again on the page that covers it, and What’s New and Migrating Older Code collects them. The "Status" column says how each row was checked on 2026-10-22: documented means a current R2026b documentation page names the release; release notes means the R2024b to R2026b release notes name it; secondary means the release is confirmed only by sources other than the current documentation.

Release Change Status

R2014b

Graphics objects with dot notation; histogram

histogram documented; the dot notation is not stated on a current page

R2016b

Implicit expansion; string arrays; local functions in scripts; timetables

implicit expansion, string and timetable documented; local functions in scripts not stated on a current page (the documentation only says that before R2024a they had to be at the end of the file)

R2017a

Double-quoted string literals

secondary sources only (MathWorks Answers and a MATLAB-release review)

R2019b

arguments blocks; change to function precedence (an identifier used as a variable in a function cannot also be called as a function in that function)

documented

R2020b

pattern objects

documented

R2021a

Name=Value call syntax

documented

R2022b

dictionary; buildtool; codeIssues

release notes

R2023a

Build tasks with arguments; incremental builds

release notes

R2023b

configureDictionary, insert, lookup, remove; readstruct and writestruct for JSON; the ode object; TestTask, CodeIssuesTask and CleanTask; codeIssues export to SARIF; piechart and donutchart; native Apple silicon

release notes

R2024a

Packages renamed namespaces; meta.* becomes matlab.metadata.*; local functions anywhere in a script; createArray; Live Editor export to Markdown and Jupyter

release notes

R2024b

MATLAB Package Manager (mpm functions, mpackage.json); weak references; matlab.lang.obfuscateNames; readdictionary and writedictionary; build task groups; isapprox; violinplot; the Help browser removed (documentation opens in the system web browser)

release notes

R2025a

New web-based desktop (themes, panels, figures as tabs); plain-text live code; namelengthmax is 2048; cancel for onCleanup; GUIDE removed; plot tools removed; mustBeBetween and allbetween; custom build task classes; MATLAB Copilot (a separate product)

release notes

R2025b

A quality and stability release

release notes

R2026a

metafunction; mustBeSorted; mustBeInRange becomes not recommended in favour of mustBeBetween (introduced in R2025a); namespaceFunctions and namespaceClasses; MATLAB Vault importSecrets; ode automatic-differentiation Jacobian; External Languages panel and pystringarray; Python 3.13; JSON as tables and timetables; raincloudplot; info, helpdesk and whatsnew removed; parallel build tasks; function-syntax classes: the removal notice (first listed in R2025a) is repeated

release notes

R2026b

Java no longer installed; "toolbox" becomes "package"; File Exchange as a repository; matlab.toml; plain-text live scripts by default; markdowndisp; ANSI styling in the Command Window; Google Sheets I/O; numeric row times; buildtool -outputCache and -report, PackageTask; runtests UseParallel="auto"; object lifecycle management (beta); mustBeScalar and mustBeVectorOrEmpty; serial errors (use serialport); Python 3.14 added, Python 3.9 no longer supported, Python installable from the Add-Ons panel, Ctrl+C interrupts out-of-process Python

release notes

Source: MATLAB release notes (the full text is also published as Markdown)

How the pages were checked:

  • Every page names the release it was written against. MATLAB R2026b is not installed on the machine that produced these pages and cannot be installed or signed into by the author, so the examples were handled in two ways. Code that GNU Octave also accepts was run in Octave 11.3.0 in a throwaway container and its captured output is shown, labelled "Octave 11.3.0 output"; MATLAB’s own display differs in layout (for example size headers such as 3×1), and where the difference matters the page says so. Everything Octave cannot run (arguments blocks, classdef features, dictionary, tables and timetables, buildtool, matlab.unittest, App Designer, live scripts, MEX, the Python interfaces, projects and the package manager, and anything new in R2026b) was checked line by line against the R2026b documentation and is labelled "not run here" or has its output marked as illustrative. No output is shown as captured when it was not.

  • Each example is followed by a Source: link to the official documentation page it derives from, and every source is listed in the Bibliography.

  • The code follows the current idioms and the official MATLAB Coding Guidelines: string arrays and double-quoted literals, arguments blocks, Name=Value, implicit expansion, dictionary, readtable, exportgraphics. Where older material teaches something else (bsxfun, strmatch, datenum, nargchk, GUIDE, containers.Map as the default dictionary), the page explains the difference in prose. The books used as a checklist are described under How the books were used.

  • Source code blocks use [source,matlab]. The documentation site’s code highlighter has no MATLAB grammar yet, so MATLAB code is shown without colours.

Package and toolbox

Two words changed meaning, and old material uses both in the old way.

Word Meaning before Meaning now

package

Until R2023b: a +folder that groups functions and classes under a prefix, for example +heatflow. Renamed namespace in R2024a.

Since R2024b: a MATLAB Package Manager (MPM) package, installed with mpm install or from File Exchange. Since R2026b it also covers what used to be called a toolbox (a shareable bundle of user code).

toolbox

A shareable bundle of user code in a .mltbx file; also a MathWorks add-on product such as the Statistics and Machine Learning Toolbox.

Bundles are now packages (.mltbx files are "package files"). "Toolbox" still names the add-on products, which this section does not document.

The pages define each term where they use it. Namespaces and Class Folders covers the +folder feature, Packages and the MATLAB Package Manager covers the package manager with a timeline, and Toolboxes and Add-On Products covers the products.

The heatflow scenario

The examples across the section share one small, original domain: heatflow, two-dimensional heat diffusion on a rectangular plate. It is the scenario of the Fortran Reference (#277), seen here from MATLAB, so that readers can compare the two languages on the same problem. It is a MATLAB project (heatflow/, defined by matlab.toml since R2026b) with these parts, which are introduced one at a time on the pages where their concept first appears:

  • A +heatflow namespace holding:

    • heatflow.Plate, a value class with the grid sizes, the spacing, the diffusivity, a temperature matrix T and validated properties;

    • heatflow.BoundaryKind, an enumeration with the members Dirichlet, Neumann and Periodic;

    • heatflow.Simulation, a handle class that steps the temperature field and fires a StepCompleted event;

    • functions such as heatflow.laplacian, written three ways (a loop, vectorized with indexing, and with implicit expansion);

    • heatflow.assembleSystem, which builds the sparse five-point system whose steady state is solved with the backslash operator.

  • An explicit time-stepping script, with the stability limit dt <= dx^2/(4*alpha), written as a script with %% sections and as a live script.

  • data/sensors.csv, a thermocouple log with timestamps, sensor IDs and deliberate gaps, read into a timetable with datetime, categorical sensor IDs and missing values; data/plate.json, a configuration file read with readstruct or jsondecode; and a dictionary that maps sensor IDs to plate coordinates.

  • Figures of the field (surf and contour), of the sensors (line plots) and of the readings (a histogram).

  • Tests (script, function and class-based), a buildfile.m, an MPM mpackage.json, a small App Designer viewer, a Python interop example that passes the field to NumPy, and a C++ MEX stencil kernel.

The pages build on each other, and the cheat sheet summarises the whole section. A page whose concept fits the scenario poorly uses a small standalone example instead; regular expressions on sensor labels are one case. The smallest taste of it is on Getting Started, where a three-point steady state is solved with the backslash operator.

How the books were used

Two books were consulted as concept checklists, not as sources of text: Timothy A. Davis, MATLAB Primer (eighth edition, written for MATLAB R2010a) and César Pérez López, MATHEMATICS with MATLAB: GRAPHICS and LINEAR ALGEBRA (2021). Nothing from them, whether text, listing or figure, is reproduced; each page states in prose where their forms are outdated, and the Pérez López book carries little weight because its listings were corrupted in conversion (many * and ^ signs are missing) and contain untranslated remnants. The publisher links are in the Bibliography.

New here? Read in this order

Then pick topics as you need them and keep the cheat sheet at hand. If you come from another language, read Design Philosophy and Coming from Other Languages first; if you maintain older code, start with What’s New and Migrating Older Code.

The map below shows the whole section; the next part lists every page.

mindmap root((MATLAB Reference)) Getting started Getting Started Design Philosophy and Coming from Other Languages Desktop and Command Window Language fundamentals Syntax, Statements and Variables Matrices and Arrays Indexing Data types Numeric Types and Floating Point Strings and Character Arrays Regular Expressions and Patterns Control flow Control Flow Scripts and functions Scripts and Code Sections Functions Local, Nested and Private Functions Errors, debugging and code quality Errors, Warnings and Exceptions Debugging Code Analyzer and Code Quality Object-oriented programming classdef Basics Value and Handle Classes Properties and Methods Graphics 2-D Plotting 3-D Plotting and Surfaces Graphics Objects and Customization Data import and export Reading and Writing Tabular Data Low-Level File I/O and the File System JSON, XML and Web Access Mathematics Linear Algebra Sparse Matrices and Graphs Elementary Math, Polynomials and Interpolation Performance Vectorization and Preallocation Profiling and Timing Background and Asynchronous Execution Testing and build Unit Testing with matlab.unittest Test Fixtures, Parameterization and Mocking Build Automation with buildtool Interfaces with other languages Calling Python from MATLAB MATLAB Engine API for Python C/C++ Libraries and MEX Live scripts, apps and sharing Live Scripts and the Live Editor Building Apps with App Designer Projects and Source Control Practice and reference Coding Style and Idioms What's New and Migrating Older Code GNU Octave Compatibility

What is covered

The section has 85 pages, in fifteen groups. Every page is also reachable from the navigation tree on the left.

Getting started

Language fundamentals

Data types

Control flow

  • Control Flow — if, switch, for, while, break, continue and return

Scripts and functions

Errors, debugging and code quality

Object-oriented programming

Graphics

Data import and export

Mathematics

Performance

Testing and build

Interfaces with other languages

Live scripts, apps and sharing

Practice and reference

Bibliography

The sources used to prepare this section are listed here, each linked to its official website. Individual pages list the subset they derive from under their own == References heading, and every documentation topic cited anywhere in the section appears below. MathWorks and Octave pages change with every release, so a link may lead to newer text than the page that cites it.

Official MathWorks documentation

MATLAB documentation topics cited by the pages

The topics below are every https://www.mathworks.com/help/matlab/ page cited in a == References heading, grouped by the section group whose pages cite them first. The link text is the path under that root, without .html.

Getting started (54 topics):

Language fundamentals (40 topics):

Data types (138 topics):

categorical-arrays  |  cell-arrays  |  creating_plots/plots-that-support-tables  |  data-type-conversion  |  data-type-identification  |  data_analysis/missing-data-in-matlab  |  data_analysis/summarize-or-pivot  |  dictionary  |  matlab_prog/access-data-in-a-cell-array  |  matlab_prog/access-data-in-a-table  |  matlab_prog/build-pattern-expressions  |  matlab_prog/clean-messy-and-missing-data-in-tables  |  matlab_prog/combine-timetables-and-synchronize-their-data  |  matlab_prog/compare-dates-and-time  |  matlab_prog/complex-numbers  |  matlab_prog/create-a-structure-array  |  matlab_prog/create-a-table  |  matlab_prog/create-categorical-arrays  |  matlab_prog/create-timetables  |  matlab_prog/dictionaries-and-custom-classes  |  matlab_prog/direct-calculations-on-tables-and-timetables  |  matlab_prog/display-format-for-numeric-values  |  matlab_prog/dynamic-regular-expressions  |  matlab_prog/floating-point-numbers  |  matlab_prog/formatting-strings  |  matlab_prog/frequently-asked-questions-about-string-arrays  |  matlab_prog/generate-field-names-from-variables  |  matlab_prog/generate-sequence-of-dates-and-time  |  matlab_prog/getting-started-with-dictionaries  |  matlab_prog/infinity-and-nan  |  matlab_prog/integer-arithmetic  |  matlab_prog/integers  |  matlab_prog/lookahead-assertions-in-regular-expressions  |  matlab_prog/managedatatypesindictionaries  |  matlab_prog/regular-expressions  |  matlab_prog/rename-and-describe-table-variables  |  matlab_prog/replace-discouraged-instances-of-serial-date-numbers-and-date-strings  |  matlab_prog/represent-date-and-times-in-MATLAB  |  matlab_prog/represent-text-with-character-and-string-arrays  |  matlab_prog/resample-and-aggregate-data-in-timetable  |  matlab_prog/single-precision-math  |  matlab_prog/tokens-in-regular-expressions  |  numeric-types  |  ref/anymissing  |  ref/append  |  ref/calendarduration  |  ref/cast  |  ref/categorical.addcats  |  ref/categorical.categories  |  ref/categorical.countcats  |  ref/categorical  |  ref/categorical.isordinal  |  ref/categorical.mergecats  |  ref/categorical.removecats  |  ref/categorical.renamecats  |  ref/categorical.reordercats  |  ref/cellstr  |  ref/char  |  ref/class  |  ref/complex  |  ref/containers.map  |  ref/datetime.between  |  ref/datetime.caldiff  |  ref/datetime.convertto  |  ref/datetime.dateshift  |  ref/datetime.exceltime  |  ref/datetime  |  ref/dictionary.configuredictionary  |  ref/dictionary.entries  |  ref/dictionary  |  ref/dictionary.insert  |  ref/dictionary.iskey  |  ref/dictionary.keys  |  ref/dictionary.lookup  |  ref/dictionary.numentries  |  ref/dictionary.remove  |  ref/double.groupcounts  |  ref/double.groupsummary  |  ref/double.isbetween  |  ref/double.ismember  |  ref/double.maxk  |  ref/double.mean  |  ref/double.mink  |  ref/double.sort  |  ref/double.sortrows  |  ref/double.topkrows  |  ref/double.union  |  ref/double.unique  |  ref/duration  |  ref/fillmissing  |  ref/findstr  |  ref/flintmax  |  ref/idivide  |  ref/intmax  |  ref/isa  |  ref/ismissing  |  ref/labels  |  ref/leapseconds  |  ref/missing  |  ref/nan  |  ref/nat  |  ref/num2str  |  ref/pattern  |  ref/pivot  |  ref/readdictionary  |  ref/readtimetable  |  ref/realmax  |  ref/regexp  |  ref/regexprep  |  ref/rmmissing  |  ref/standardizemissing  |  ref/str2double  |  ref/str2num  |  ref/strcat  |  ref/strcmp  |  ref/string.compose  |  ref/string  |  ref/string.sprintf  |  ref/strlength  |  ref/strmatch  |  ref/table  |  ref/table.innerjoin  |  ref/table.rowfun  |  ref/table.stack  |  ref/timerange  |  ref/timetable  |  ref/timetable.isregular  |  ref/timetable.lag  |  ref/timetable.retime  |  ref/timetable.synchronize  |  ref/timezones  |  ref/typecast  |  ref/validateattributes  |  ref/withtol  |  ref/writedictionary  |  set-operations  |  tables  |  timetables

Control flow (8 topics):

Scripts and functions (47 topics):

math/parameterizing-functions  |  matlab_prog/anonymous-functions  |  matlab_prog/argument-validation-functions  |  matlab_prog/base-and-function-workspaces  |  matlab_prog/create-and-run-sections  |  matlab_prog/create-functions-in-files  |  matlab_prog/create-scripts  |  matlab_prog/creating-a-function-handle  |  matlab_prog/function-argument-validation-1  |  matlab_prog/function-precedence-order  |  matlab_prog/ignore-function-inputs  |  matlab_prog/ignore-function-outputs  |  matlab_prog/local-functions-in-scripts  |  matlab_prog/local-functions  |  matlab_prog/namevalue-in-function-calls  |  matlab_prog/nested-functions  |  matlab_prog/parse-function-inputs  |  matlab_prog/private-functions  |  matlab_prog/scripts-and-functions  |  matlab_prog/share-data-between-workspaces  |  matlab_prog/string-evaluation  |  matlab_prog/support-variable-number-of-inputs  |  matlab_prog/support-variable-number-of-outputs  |  matlab_prog/transparency-in-variable-access  |  matlab_prog/types-of-functions  |  matlab_prog/validate-name-value-arguments  |  matlab_prog/validate-repeating-arguments  |  matlab_prog/validate-required-and-optional-positional-arguments  |  ref/arguments  |  ref/arrayfun  |  ref/assignin  |  ref/cellfun  |  ref/eval  |  ref/evalin  |  ref/feval  |  ref/func2str  |  ref/function_handle  |  ref/functions  |  ref/import  |  ref/localfunctions  |  ref/matlablinux  |  ref/metafunction  |  ref/mustbebetween  |  ref/mustbeinrange  |  ref/mustbevectororempty  |  ref/run  |  ref/str2func

Errors, debugging and code quality (54 topics):

import_export/keep-sensitive-information-out-of-code  |  matlab_env/configure-code-analyzer  |  matlab_env/modify-existing-code-analyzer-checks-or-create-new-checks  |  matlab_prog/add-help-to-live-functions  |  matlab_prog/check-code-for-errors-and-warnings  |  matlab_prog/create-a-help-summary-contents-m  |  matlab_prog/create-help-for-classes  |  matlab_prog/customize-code-suggestions-and-completions  |  matlab_prog/debugging-process-and-features  |  matlab_prog/display-custom-documentation  |  matlab_prog/edit-and-format-code  |  matlab_prog/error-reporting-in-a-matlab-application  |  matlab_prog/examine-values  |  matlab_prog/issue-warnings-and-errors  |  matlab_prog/matlab-code-analyzer-report  |  matlab_prog/matlab-code-compatibility-report  |  matlab_prog/protect-your-source-code  |  matlab_prog/publishing-matlab-code  |  matlab_prog/respond-to-an-exception  |  matlab_prog/set-breakpoints  |  matlab_prog/suppress-warnings  |  matlab_prog/use-trycatch-to-handle-errors  |  ref/assert  |  ref/checkcode  |  ref/codecompatibilityreport  |  ref/codeissues.export  |  ref/codeissues.fix  |  ref/codeissues  |  ref/dbclear  |  ref/dbstack  |  ref/dbstatus  |  ref/dbstep  |  ref/dbstop  |  ref/dbup  |  ref/error  |  ref/importsecrets  |  ref/keyboard  |  ref/lastwarn  |  ref/loadenv  |  ref/matlab.buildtool.tasks.codeissuestask-class  |  ref/matlab.codeanalysis.validateconfiguration  |  ref/matlab.lang.obfuscatenames  |  ref/mexception.addcause  |  ref/mexception  |  ref/mexception.last  |  ref/mexception.rethrow  |  ref/mexception.throw  |  ref/mexception.throwascaller  |  ref/oncleanup.cancel  |  ref/oncleanup  |  ref/pcode  |  ref/setsecret  |  ref/validatefunctionsignaturesjson  |  ref/warning

Object-oriented programming (89 topics):

building-class-hierarchies  |  enumeration-classes  |  events-sending-and-responding-to-messages  |  function-introspection-and-metadata  |  matlab-class-customization  |  matlab_oop/abstract-classes-and-interfaces  |  matlab_oop/accessing_properties_and_methods_in_object_arrays  |  matlab_oop/calling-superclass-methods-on-subclass-objects  |  matlab_oop/class-attributes  |  matlab_oop/class-components  |  matlab_oop/class-constructor-methods  |  matlab_oop/code-patterns-for-subsref-and-subsasgn-methods  |  matlab_oop/comparing-handle-and-value-classes  |  matlab_oop/concatenating-objects-of-different-classes  |  matlab_oop/control-allowed-subclasses  |  matlab_oop/create-a-simple-class  |  matlab_oop/creating-object-arrays  |  matlab_oop/custom-display-interface  |  matlab_oop/determining-the-class-of-an-array  |  matlab_oop/enumerations  |  matlab_oop/function-metadata-and-introspection  |  matlab_oop/handle-class-destructors  |  matlab_oop/heterogeneous-arrays  |  matlab_oop/how-to-refer-to-enumerations  |  matlab_oop/implementing-operators-for-your-class  |  matlab_oop/importing-classes  |  matlab_oop/indexed-reference-and-assignment  |  matlab_oop/initialize-property-values  |  matlab_oop/learning-to-use-events-and-listeners  |  matlab_oop/listener-lifecycle  |  matlab_oop/matlab-vs-other-oo-languages  |  matlab_oop/method-attributes  |  matlab_oop/method-invocation  |  matlab_oop/methods-in-separate-files  |  matlab_oop/methods-that-modify-default-behavior  |  matlab_oop/modifying-superclass-methods-and-properties  |  matlab_oop/mutable-and-immutable-properties  |  matlab_oop/mutable-handle-vs-immutable-value-enumeration-members  |  matlab_oop/namespaces  |  matlab_oop/object-life-cycle-management  |  matlab_oop/operations-on-enumerations  |  matlab_oop/ordinary-methods  |  matlab_oop/organizing-classes-in-folders  |  matlab_oop/properties-containing-objects  |  matlab_oop/property-attributes  |  matlab_oop/property-set-methods  |  matlab_oop/sequence-of-constructor-calls-in-a-class-hierarchy  |  matlab_oop/static-methods  |  matlab_oop/subclass-constructors  |  matlab_oop/subclass-syntax  |  matlab_oop/subclassing-multiple-classes  |  matlab_oop/validate-property-values  |  matlab_oop/weak-reference-handles  |  matlab_oop/which-kind-of-class-to-use  |  matlab_oop/why-use-object-oriented-design  |  methods-defining-operations  |  object-arrays  |  properties-storing-data-and-state  |  ref/classdef  |  ref/empty  |  ref/enumeration  |  ref/event.eventdata-class  |  ref/events  |  ref/handle.addlistener  |  ref/handle.isvalid  |  ref/handle.listener  |  ref/handle.notify  |  ref/innernamespaces  |  ref/matlab.metadata.class-class  |  ref/matlab.metadata.event-class  |  ref/matlab.metadata.method-class  |  ref/matlab.metadata.property-class  |  ref/matlab.mixin.copyable-class  |  ref/matlab.mixin.customdisplay-class  |  ref/matlab.mixin.customdisplay.getpropertygroups  |  ref/matlab.mixin.heterogeneous-class  |  ref/matlab.mixin.indexing.redefinesdot-class  |  ref/matlab.mixin.indexing.redefinesparen-class  |  ref/matlab.mixin.scalar-class  |  ref/matlab.mixin.util.propertygroup-class  |  ref/metaclass  |  ref/methods  |  ref/mustbepositive  |  ref/namespaceclasses  |  ref/namespacefunctions  |  ref/properties  |  ref/subsasgn  |  ref/subsref  |  subclass-definition

Graphics (78 topics):

creating_plots/access-and-modify-property-values  |  creating_plots/add-title-axis-labels-and-legend-to-graph  |  creating_plots/change-axis-limits-of-graph  |  creating_plots/combine-multiple-plots  |  creating_plots/compare-ways-to-export-save-graphics-plots-from-figures  |  creating_plots/graphics-objects  |  creating_plots/plotting-with-two-y-axes  |  creating_plots/save-figure-at-specific-size-and-resolution  |  creating_plots/save-figure-to-reopen-in-matlab-later  |  creating_plots/saving-your-work  |  creating_plots/using-high-level-plotting-functions  |  graphics-images  |  graphics-object-identification  |  graphics-objects  |  graphics  |  printing-and-exporting  |  ref/animatedline  |  ref/annotation  |  ref/area  |  ref/bar  |  ref/boxchart  |  ref/clim  |  ref/colorbar  |  ref/colormap  |  ref/contour  |  ref/contour3  |  ref/contourf  |  ref/copygraphics  |  ref/cylinder  |  ref/donutchart  |  ref/drawnow  |  ref/errorbar  |  ref/exportgraphics  |  ref/fcontour  |  ref/findobj  |  ref/fplot  |  ref/fsurf  |  ref/gca  |  ref/gcf  |  ref/get  |  ref/groot  |  ref/hold  |  ref/image  |  ref/imagesc  |  ref/imfinfo  |  ref/imread  |  ref/imwrite  |  ref/isgraphics  |  ref/legend  |  ref/lighting  |  ref/mesh  |  ref/meshgrid  |  ref/ndgrid  |  ref/nexttile  |  ref/openfig  |  ref/piechart  |  ref/plot  |  ref/plot3  |  ref/polarhistogram  |  ref/polarplot  |  ref/print  |  ref/quiver  |  ref/raincloudplot  |  ref/saveas  |  ref/savefig  |  ref/scatter  |  ref/set  |  ref/shading  |  ref/sphere  |  ref/stairs  |  ref/stem  |  ref/surf  |  ref/text  |  ref/theme  |  ref/tiledlayout  |  ref/view  |  ref/violinplot  |  ref/yyaxis

Data import and export (59 topics):

Mathematics (91 topics):

data_analysis/data-smoothing-and-outlier-detection  |  descriptive-statistics  |  elementary-math  |  fourier-analysis-and-filtering  |  graph-and-network-algorithms  |  interpolation  |  math/choose-an-ode-solver  |  math/control-random-number-generation  |  math/creating-and-controlling-a-random-number-stream  |  math/eigenvalues  |  math/factorizations  |  math/generate-random-numbers-that-are-different  |  math/generate-random-numbers-that-are-repeatable  |  math/matrices-in-the-matlab-environment  |  math/singular-values  |  math/systems-of-linear-equations  |  math/updating-your-random-number-generator-syntax  |  math/why-do-random-numbers-repeat-after-startup  |  numerical-integration-and-differential-equations  |  optimization  |  preprocessing-data  |  random-number-generation  |  ref/bicgstab  |  ref/chol  |  ref/cond  |  ref/conv  |  ref/cumtrapz  |  ref/decomposition  |  ref/det  |  ref/double.mldivide  |  ref/double.normalize  |  ref/double.rand  |  ref/double.randi  |  ref/double.randn  |  ref/double.randperm  |  ref/eig  |  ref/expm  |  ref/fft  |  ref/fft2  |  ref/fftshift  |  ref/filter  |  ref/fminbnd  |  ref/fminsearch  |  ref/fzero  |  ref/gmres  |  ref/griddedinterpolant  |  ref/ichol  |  ref/ilu  |  ref/integral  |  ref/integral2  |  ref/integral3  |  ref/interp2  |  ref/inv  |  ref/isoutlier  |  ref/kron  |  ref/logm  |  ref/lsqminnorm  |  ref/lsqnonneg  |  ref/lu  |  ref/movmean  |  ref/norm  |  ref/null  |  ref/ode  |  ref/ode.solve  |  ref/ode15s  |  ref/ode23  |  ref/ode45  |  ref/odeset  |  ref/optimset  |  ref/orth  |  ref/pcg  |  ref/pinv  |  ref/polyfit  |  ref/polyval  |  ref/qr  |  ref/randstream  |  ref/rank  |  ref/rcond  |  ref/rng  |  ref/roots  |  ref/scatteredinterpolant  |  ref/smoothdata  |  ref/sparse  |  ref/spdiags  |  ref/spy  |  ref/sqrtm  |  ref/svd  |  ref/symamd  |  ref/trace  |  ref/trapz  |  sparse-matrices

Performance (37 topics):

Testing and build (36 topics):

continuous-integration  |  matlab_prog/cache-task-outputs  |  matlab_prog/class-based-unit-tests  |  matlab_prog/collect-statement-and-function-coverage-metrics-for-matlab-source-code  |  matlab_prog/continuous-integration-with-matlab-on-ci-platforms  |  matlab_prog/create-and-run-tasks-using-build-tool  |  matlab_prog/create-custom-reusable-tasks  |  matlab_prog/create-groups-of-tasks  |  matlab_prog/create-mock-object  |  matlab_prog/create-tasks-that-accept-arguments  |  matlab_prog/define-parameters-at-suite-creation-time  |  matlab_prog/function-based-unit-tests  |  matlab_prog/generate-artifacts-using-matlab-unit-test-plugins  |  matlab_prog/improve-performance-with-incremental-builds  |  matlab_prog/overview-of-matlab-build-tool  |  matlab_prog/run-tests-using-test-browser  |  matlab_prog/tag-unit-tests  |  matlab_prog/types-of-qualifications  |  matlab_prog/use-parameters-in-class-based-tests  |  matlab_prog/ways-to-write-unit-tests  |  matlab_prog/write-script-based-unit-tests  |  matlab_prog/write-setup-and-teardown-code-using-classes  |  matlab_prog/write-test-using-shared-fixtures  |  mock-dependencies-in-tests  |  ref/buildtool  |  ref/matlab.buildtool.task-class  |  ref/matlab.buildtool.tasks.cleantask-class  |  ref/matlab.buildtool.tasks.packagetask-class  |  ref/matlab.buildtool.tasks.testtask-class  |  ref/matlab.unittest.fixtures.temporaryfolderfixture-class  |  ref/matlab.unittest.qualifications.verifiable.verifyequal  |  ref/matlab.unittest.testcase-class  |  ref/matlab.unittest.testresult-class  |  ref/runtests  |  run-unit-tests  |  test-apps

Interfaces with other languages (113 topics):

apiref/matlab.data.arrayfactory  |  apiref/matlab.data.typedarray  |  apiref/matlab.engine.connect_matlab  |  apiref/matlab.engine.futureresult-class  |  apiref/matlab.engine.matlabengine-class  |  apiref/matlab.engine.start_matlab  |  apiref/matlab.mex.function  |  apiref/mexfunction  |  apiref/mxgetdoubles  |  apiref/mxgetpr  |  build-matlab-interface-to-c-library  |  call-c-library-functions  |  call-cpp-library-functions  |  call-mex-file-functions  |  call-mex-files-1  |  call-mex-fortran  |  call-net-from-matlab  |  call-python-libraries  |  calling-matlab-engine-from-cpp-programs  |  cpp-mex-file-applications  |  java-language  |  matlab-engine-api-for-java  |  matlab-engine-for-python  |  matlab_external/accessing-elements-in-python-container-types  |  matlab_external/avoid-copies-of-large-arrays  |  matlab_external/build-c-mex-programs  |  matlab_external/c-matrix-api-typed-data-access  |  matlab_external/c-mex-source-file  |  matlab_external/call-matlab-functions-asynchronously-from-python  |  matlab_external/call-matlab-functions-from-python  |  matlab_external/call-user-defined-custom-module  |  matlab_external/choosing-mex-applications  |  matlab_external/configure-your-system-to-use-java  |  matlab_external/connect-python-to-running-matlab-session  |  matlab_external/cpp-mex-api  |  matlab_external/create-object-from-python-class  |  matlab_external/data-types-for-passing-mex-function-data-1  |  matlab_external/differences-between-matlab-python  |  matlab_external/handle-python-exceptions  |  matlab_external/handling-data-returned-from-java-methods  |  matlab_external/handling-inputs-and-outputs  |  matlab_external/install-supported-python-implementation  |  matlab_external/install-the-matlab-engine-for-python  |  matlab_external/java-class-path  |  matlab_external/limitations-to-net-support  |  matlab_external/limitations-to-python-support  |  matlab_external/limitations-to-the-matlab-engine-for-python  |  matlab_external/load-cpp-library-in-process-or-out-of-process  |  matlab_external/manage-python-environments-using-external-languages-panel  |  matlab_external/matlab-arrays-as-python-variables  |  matlab_external/matlab-support-for-interleaved-complex  |  matlab_external/matlab-type-to-cpp-type-mapping  |  matlab_external/mex-file-segmentation-fault  |  matlab_external/out-of-process-execution-of-c-mex-functions  |  matlab_external/out-of-process-execution-of-python-functionality  |  matlab_external/pass-data-between-matlab-and-python-from-python  |  matlab_external/passing-data-to-java-methods  |  matlab_external/passing-data-to-python  |  matlab_external/publish-interface-to-c-library-using-source-files  |  matlab_external/python-dict-variables  |  matlab_external/python-function-arguments  |  matlab_external/python-pandas-dataframes  |  matlab_external/pythonnumericvariables  |  matlab_external/redirect-standard-output-and-error-to-python  |  matlab_external/reload-python-interpreter  |  matlab_external/run-external-commands-scripts-and-programs  |  matlab_external/start-the-matlab-engine-for-python  |  matlab_external/steps-to-publish-a-matlab-interface-to-a-c-library  |  matlab_external/structure-of-c-mex-function  |  matlab_external/system-requirements-for-matlab-cpp-library-interface  |  matlab_external/troubleshoot-matlab-errors-in-python  |  matlab_external/troubleshooting-multidimensional-array-argument-errors  |  matlab_external/troubleshooting-python-errors  |  matlab_external/undefined-variable-py-or-function-py-command  |  matlab_external/use-the-matlab-engine-workspace-in-python  |  matlab_external/ways-to-call-python-from-matlab  |  matlab_external/what-types-of-files-define-your-library  |  net-types  |  net-with-matlab  |  ref/calllib  |  ref/clibconfiguration  |  ref/clibgen.api.interfaceconfiguration  |  ref/clibgen.api.interfacedefinition  |  ref/clibgen.buildinterface  |  ref/clibgen.generatelibrarydefinition  |  ref/clibpublishinterfaceworkflow  |  ref/dos  |  ref/dotnetenv  |  ref/getenv  |  ref/javaaddpath  |  ref/javaclasspath  |  ref/javamethod  |  ref/javaobject  |  ref/jenv  |  ref/loadlibrary  |  ref/matlab.engine.shareengine  |  ref/matlab.exception.pyexception-class  |  ref/matlab.pyclient.pythonenvironment  |  ref/matlab.pyclient.pythonenvironment.terminate  |  ref/mex  |  ref/net.addassembly  |  ref/pyargs  |  ref/pyenv  |  ref/pyrun  |  ref/pyrunfile  |  ref/pystringarray  |  ref/pyversion  |  ref/runpythoncode  |  ref/setenv  |  ref/system  |  ref/unix  |  use-prebuilt-matlab-interface-to-c-library  |  using-java-libraries-in-matlab

Live scripts, apps and sharing (23 topics):

Practice and reference (4 topics):

MathWorks learning and community resources

History

Books

  • Timothy A. Davis, MATLAB Primer, Eighth Edition, CRC Press (Taylor & Francis), 2011. ISBN 978-1-4398-2862-5, DOI 10.1201/9781439828632. Publisher pages: Routledge and Taylor & Francis. Written for MATLAB R2010a.

  • César Pérez López, MATHEMATICS with MATLAB: GRAPHICS and LINEAR ALGEBRA, Scientific Books (self-published through Lulu), 2021. ISBN 978-1-7948-5118-4 (paperback) and 978-1-7948-6819-2 (ebook). Lulu has no product page for it that could be verified, so the retailer listing is given: Amazon.

Both books were used only as concept checklists, as described in How the books were used; no text, listing or figure was copied.

Third-party: GNU Octave

GNU Octave is an independent, MATLAB-compatible project. It is used only to run the examples that both languages accept and on the GNU Octave Compatibility page.

Specifications and standards

Each is cited where a page uses it.

The Python and Rust references of this site link here for MATLAB. The Fortran, COBOL, Visual Basic and R references (issues #277, #243, #280 and #282) and the related issues #196, #244, #245, #275 and #276 are mentioned by number only.