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
.mfiles by default. -
.mltbxfiles are now called package files, File Exchange is a default package repository, and projects use amatlab.tomldefinition file. -
New
markdowndispfunction 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; |
|
R2016b |
Implicit expansion; |
implicit expansion, |
R2017a |
Double-quoted string literals |
secondary sources only (MathWorks Answers and a MATLAB-release review) |
R2019b |
|
documented |
R2020b |
|
documented |
R2021a |
|
documented |
R2022b |
|
release notes |
R2023a |
Build tasks with arguments; incremental builds |
release notes |
R2023b |
|
release notes |
R2024a |
Packages renamed namespaces; |
release notes |
R2024b |
MATLAB Package Manager ( |
release notes |
R2025a |
New web-based desktop (themes, panels, figures as tabs); plain-text live code; |
release notes |
R2025b |
A quality and stability release |
release notes |
R2026a |
|
release notes |
R2026b |
Java no longer installed; "toolbox" becomes "package"; File Exchange as a repository; |
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 (argumentsblocks,classdeffeatures,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,
argumentsblocks,Name=Value, implicit expansion,dictionary,readtable,exportgraphics. Where older material teaches something else (bsxfun,strmatch,datenum,nargchk, GUIDE,containers.Mapas 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 |
Since R2024b: a MATLAB Package Manager (MPM) package, installed with |
toolbox |
A shareable bundle of user code in a |
Bundles are now packages ( |
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
+heatflownamespace holding:-
heatflow.Plate, a value class with the grid sizes, the spacing, the diffusivity, a temperature matrixTand validated properties; -
heatflow.BoundaryKind, an enumeration with the membersDirichlet,NeumannandPeriodic; -
heatflow.Simulation, a handle class that steps the temperature field and fires aStepCompletedevent; -
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 withdatetime, categorical sensor IDs and missing values;data/plate.json, a configuration file read withreadstructorjsondecode; and adictionarythat maps sensor IDs to plate coordinates. -
Figures of the field (
surfandcontour), of the sensors (line plots) and of the readings (a histogram). -
Tests (script, function and class-based), a
buildfile.m, an MPMmpackage.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
-
Getting Started — what MATLAB is and a first session
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.
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
-
this page, the landing page: the section overview, the version baseline, the scenario and the bibliography
-
Getting Started — what MATLAB is, installing and licensing, a first session and script
-
MATLAB IDEs & Tools — the desktop, MATLAB Online and the editors commonly used for MATLAB.
-
Design Philosophy and Coming from Other Languages — the design of the language and idiom maps from Python, R, Julia, Fortran and C
-
Desktop and Command Window — the R2025a desktop and Command Window use
-
Getting Help and Documentation — help, doc, lookfor, which and how to read a reference page
-
Workspace Variables and MAT-Files — the workspace, save, load and matfile
-
Search Path, Startup and Files — the current folder, the path and startup.m
Language fundamentals
-
Syntax, Statements and Variables — statements, variables, comments, command and function syntax
-
Matrices and Arrays — creating arrays, column-major storage, multidimensional and empty arrays
-
Indexing — subscript, linear and logical indexing, end, deletion and growth
-
Operators and Precedence — array and matrix operations and the precedence table
-
Logical Type and Conditions — logical arrays, short-circuit operators and testing conditions
-
Implicit Expansion and Compatible Sizes — arithmetic on arrays of different but compatible sizes
-
Comma-Separated Lists — expanding cells and structure arrays into argument lists
Data types
-
Numeric Types and Floating Point — double, single, integers, complex, Inf, NaN and eps
-
Strings and Character Arrays — string arrays, character vectors and text functions
-
Regular Expressions and Patterns — regexp and pattern objects
-
Cell Arrays — containers for mixed data
-
Structures — named fields, dynamic fields and structure arrays
-
Tables — heterogeneous tabular data
-
Timetables — time-stamped tabular data
-
Dates and Times — datetime, duration and calendarDuration
-
Categorical Arrays — values from a fixed set
-
Dictionaries and containers.Map — key-value lookup
-
Missing Data — NaN, NaT, missing and the functions that handle them
-
Type Identification and Conversion — class, isa, cast and conversions
-
Sets and Sorting — unique, union, intersect, sort and sortrows
Control flow
-
Control Flow — if, switch, for, while, break, continue and return
Scripts and functions
-
Scripts and Code Sections — script files and %% sections
-
Functions — function files, inputs and outputs
-
Local, Nested and Private Functions — where helper functions live
-
Anonymous Functions and Function Handles — @ handles and closures
-
Argument Validation — arguments blocks and Name=Value arguments
-
Variable Number of Arguments — varargin, varargout, nargin and nargout
-
Workspaces, Scope, Global and Persistent — where variables live
-
Function Precedence and Name Resolution — which definition a name refers to
-
eval and Its Alternatives — dynamic code and safer ways to do it
Errors, debugging and code quality
-
Errors, Warnings and Exceptions — MException, try and catch, onCleanup
-
Debugging — breakpoints, stepping and dbstop
-
Code Analyzer and Code Quality — codeIssues and the Code Analyzer
-
Help Text and Documenting Code — writing help that help and doc can show
-
Secrets and Protecting Code — MATLAB Vault and P-code
Object-oriented programming
-
classdef Basics — defining a class
-
Value and Handle Classes — copy semantics, destructors and weak references
-
Properties and Methods — attributes, validation and operator overloading
-
Inheritance and Abstract Classes — superclasses and abstract members
-
Events and Listeners — notify and addlistener
-
Enumerations — enumeration classes
-
Namespaces and Class Folders — +folders, @folders and the R2024a renaming
-
Object Arrays, Customization and Introspection — arrays of objects and matlab.metadata
Graphics
-
2-D Plotting — line, scatter, bar and histogram plots
-
3-D Plotting and Surfaces — surf, contour and mesh
-
Graphics Objects and Customization — the graphics object model and dot notation
-
Exporting Figures and Images — exportgraphics and saving images
Data import and export
-
Reading and Writing Tabular Data — readtable, spreadsheets and writetable
-
Low-Level File I/O and the File System — fopen, fprintf and folder functions
-
JSON, XML and Web Access — jsondecode, readstruct and webread
-
Large Data, Datastores and Tall Arrays — data that does not fit in memory
Mathematics
-
Linear Algebra — backslash, factorisations, eigenvalues and the SVD
-
Sparse Matrices and Graphs — sparse storage and graph objects
-
Elementary Math, Polynomials and Interpolation — everyday math functions
-
Random Numbers and Reproducibility — rng and random generators
-
Descriptive Statistics and Preprocessing — mean, std and data cleaning in base MATLAB
-
Integration, ODEs and Optimization — integral, ode45, the ode object and fzero
-
Fourier Analysis — fft and friends
Performance
-
Vectorization and Preallocation — writing fast array code
-
Profiling and Timing — tic, toc, timeit and the Profiler
-
Background and Asynchronous Execution — backgroundPool, parfeval and timer
Testing and build
-
Unit Testing with matlab.unittest — script, function and class-based tests
-
Test Fixtures, Parameterization and Mocking — advanced testing
-
Build Automation with buildtool — build files and tasks
-
Continuous Integration — running MATLAB in CI pipelines
Interfaces with other languages
-
Calling Python from MATLAB — the py. interface
-
MATLAB Engine API for Python — calling MATLAB from Python
-
C/C++ Libraries and MEX — MEX files and clibgen
-
Java, .NET and System Commands — other interfaces
Live scripts, apps and sharing
-
Live Scripts and the Live Editor — live code and plain-text .m live scripts
-
Building Apps with App Designer — apps with App Designer
-
Projects and Source Control — projects and matlab.toml
-
Packages and the MATLAB Package Manager — mpm and package files
Practice and reference
-
Coding Style and Idioms — the MATLAB Coding Guidelines
-
What’s New and Migrating Older Code — R2016b to R2026b and outdated forms
-
GNU Octave Compatibility — running MATLAB code in Octave
-
Toolboxes and Add-On Products — the add-on products, listed only
-
Cheat Sheet — a one-page PDF summary
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 home and its top-level categories: Get Started, Language Fundamentals, Data Import and Analysis, Mathematics, Graphics, Programming, App Building, Software Development, External Language Interfaces, and Environment and Settings
-
MATLAB release notes (the full text is also published as Markdown)
-
MATLAB installation and licensing documentation, installing products and mpminstall
-
Python compatibility, OpenJDK requirements and batch licensing tokens
-
matlabengine on PyPI, the MATLAB Engine API for Python package, published by MathWorks
-
MATLAB GitHub Actions (setup-matlab, run-command, run-tests and run-build), published by MathWorks
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):
cloud-file-storage | desktop | getting-started-with-matlab | import_export/mat-file-versions | learn_matlab/desktop | learn_matlab/help | math/array-indexing | matlab_env/change-the-desktop-layout | matlab_env/commonly-used-startup-options | matlab_env/enter-statements-in-command-window | matlab_env/files-and-folders-that-matlab-accesses | matlab_env/matlab-online | matlab_env/matlab-startup-folder | matlab_env/save-load-and-delete-workspace-variables | matlab_env/what-is-the-matlab-search-path | matlab_prog/add-help-for-your-program | matlab_prog/avoid-unnecessary-copies-of-data | matlab_prog/compatible-array-sizes-for-basic-operations | matlab_prog/memory-allocation | ref/addpath | ref/clc | ref/clear | ref/clearvars | ref/commandhistory | ref/diary | ref/disp | ref/doc | ref/docsearch | ref/exist | ref/finish | ref/format | ref/genpath | ref/help | ref/load | ref/lookfor | ref/markdowndisp | ref/matlab.io.matfile | ref/path | ref/pathtool | ref/prefdir | ref/rmpath | ref/save | ref/savepath | ref/startup | ref/userpath | ref/ver | ref/version | ref/what | ref/which | ref/who | ref/whos | release-notes | search-path | startup-and-shutdown
Language fundamentals (40 topics):
learn_matlab/matrices-and-arrays | logical-operations | math/creating-and-concatenating-matrices | math/detailed-rules-about-array-indexing | math/empty-arrays | math/indexed-assignment | math/multidimensional-arrays | math/removing-rows-or-columns-from-a-matrix | math/reshaping-and-rearranging-arrays | matlab_prog/array-vs-matrix-operations | matlab_prog/case-and-space-sensitivity | matlab_prog/comma-separated-lists | matlab_prog/command-vs-function-syntax | matlab_prog/comments | matlab_prog/conditional-statements | matlab_prog/continue-long-statements-on-multiple-lines | matlab_prog/find-array-elements-that-meet-a-condition | matlab_prog/indexing-into-function-call-results | matlab_prog/matlab-operators-and-special-characters | matlab_prog/operator-precedence | matlab_prog/variable-names | ref/all | ref/any | ref/bsxfun | ref/cat | ref/createarray | ref/deal | ref/find | ref/ind2sub | ref/isapprox | ref/iskeyword | ref/ismember | ref/isvarname | ref/logical | ref/matlab.lang.makevalidname | ref/namelengthmax | ref/repmat | ref/squeeze | ref/sub2ind | relational-operators
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):
control-flow | matlab_prog/loop-control-statements | ref/for | ref/if | ref/return | ref/switch | ref/try | ref/while
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):
datastore | file-operations | http-interface | import_export/connect-matlab-to-your-google-account | import_export/control-how-matlab-imports-your-data | import_export/import-text-data-files-with-low-level-io | import_export/supported-file-formats-for-import-and-export | import_export/tall-arrays | import_export/what-is-a-datastore | large-files-and-big-data | low-level-file-i-o | ref/copyfile | ref/datastore | ref/delete | ref/detectimportoptions | ref/dir | ref/fclose | ref/fgetl | ref/fgets | ref/fileparts | ref/fopen | ref/fprintf | ref/fread | ref/fscanf | ref/fullfile | ref/fwrite | ref/importtool | ref/jsondecode | ref/jsonencode | ref/matlab.io.datastore.read | ref/matlab.io.text.delimitedtextimportoptions.setvartype | ref/matlab.net.http.requestmessage-class | ref/mkdir | ref/movefile | ref/readcell | ref/readlines | ref/readmatrix | ref/readstruct | ref/readtable | ref/readvars | ref/rmdir | ref/sheetnames | ref/tall.gather | ref/tall | ref/tempname | ref/textscan | ref/weboptions | ref/webread | ref/websave | ref/webwrite | ref/writelines | ref/writematrix | ref/writestruct | ref/writetable | ref/xmlread | spreadsheets | text-files | web-access-streaming | web-services
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):
background-and-parallel-processing | create-and-run-performance-tests | matlab_prog/asynchronous-functions | matlab_prog/handling-timer-queuing-conflicts | matlab_prog/measure-performance-of-your-program | matlab_prog/preallocating-arrays | matlab_prog/profiling-for-improving-performance | matlab_prog/run-functions-in-the-background | matlab_prog/run-functions-on-threads | matlab_prog/run-parallel-language-in-matlab | matlab_prog/strategies-for-efficient-use-of-memory | matlab_prog/techniques-for-improving-performance | matlab_prog/timer-callback-functions | matlab_prog/use-a-matlab-timer-object | matlab_prog/use-the-background-to-make-your-apps-more-responsive | matlab_prog/vectorization | ref/accumarray | ref/cputime | ref/memory | ref/parallel.backgroundpool | ref/parallel.fevalqueue.cancelall | ref/parallel.future.afterall | ref/parallel.future.aftereach | ref/parallel.future.cancel | ref/parallel.future.fetchoutputs | ref/parallel.future | ref/parallel.future.wait | ref/parfeval | ref/profile | ref/profiler-app | ref/profsave | ref/runperf | ref/tic | ref/timeit | ref/timer | ref/toc | ref/zeros
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):
add-ons | app-designer | creating_guis/ways-to-build-matlab-guis | develop-apps-programmatically | matlab_prog/about-mathworks-source-control-integration | matlab_prog/add-interactive-controls-to-a-live-script | matlab_prog/add-live-editor-tasks-to-a-live-script | matlab_prog/create-live-scripts | matlab_prog/create-projects | matlab_prog/file-format-for-live-scripts | matlab_prog/format-live-scripts | matlab_prog/identify-dependencies | matlab_prog/insert-equations | matlab_prog/recommended-workflow-for-software-development | matlab_prog/set-up-git-source-control | matlab_prog/share-live-scripts | matlab_prog/toml-format-for-matlab-projects | matlab_prog/use-the-matlab-package-manager-to-organize-and-distribute-code | projects | ref/gitclone | ref/gitrepo | ref/matlab.addons.install | share-and-distribute-software
Practice and reference (4 topics):
MathWorks learning and community resources
-
MATLAB Central (MATLAB Answers, Cody, Discussions) and File Exchange
-
MathWorks Blogs, including The MATLAB Blog and Cleve Moler’s Cleve’s Corner
-
MATLAB Coding Guidelines (version 1.0.0, 2025-09-18, for R2025a and later)
-
MATLAB Online, the pricing and licensing options (Student, Home, Campus-Wide, trial) and the MathWorks product catalogue, whose product pages are the sources for the add-on products page
History
-
Cleve Moler and Jack Little, "A History of MATLAB", Proceedings of the ACM on Programming Languages 4 (HOPL), 2020, DOI 10.1145/3386331: https://dl.acm.org/doi/10.1145/3386331
-
Nicholas J. Higham, "What’s New in MATLAB R2017a?" (secondary source for the introduction of double-quoted string literals): https://nhigham.com/2017/03/22/whats-new-in-matlab-r2017a/
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.
-
GNU Octave (version 11.3.0, released 2026-06-01)
-
Octave documentation, including Broadcasting and Packages
-
Octave Packages (the address https://packages.octave.org/ redirects there)
Specifications and standards
Each is cited where a page uses it.
-
IEEE 754, floating-point arithmetic: https://standards.ieee.org/ieee/754/6210/
-
Unicode and UTF-8: RFC 3629
-
CSV: RFC 4180
-
JSON: RFC 8259
-
XML: W3C XML 1.0
-
Dates and times: ISO 8601 and the IANA time-zone database
-
MAT-file version 7.3 is an HDF5 file: HDF5
-
The
matlab.tomlproject definition file uses TOML 1.0 -
The
codeIssuesexport uses SARIF 2.1.0