MATLAB Versions: more details about height and width authored by Sébastien Villemot's avatar Sébastien Villemot
This page lists changes introduced in MATLAB versions that are the most
relevant to Dynare development. This information mostly comes from the [MATLAB
Release Notes](https://fr.mathworks.com/help/matlab/release-notes.html).
# MATLAB 24.2 (R2024b)
- New [package manager](https://www.mathworks.com/help/matlab/matlab_prog/use-the-matlab-package-manager-to-organize-and-distribute-code.html)
- New `isapprox` function for determining approximate equality of elements in two arrays
- New `RegularizationFactor` name-value argument to the `lsqminnorm` function,
for Tikhonov regularization to the least-squares solution
- Many I/O functions can now directly read data online using an HTTP/HTTPS URL,
notably:
+ `isfile`, `dir`, `copyfile`, and `exist`
+ `fopen`, `fread`, `fgets`, `fgetl`, `feof`, `fclose`, `ferror`, `fseek`, `ftell`, `fscanf`,
`frewind`, and `fileread`
+ `h5disp`, `h5info`, `h5read`, `h5readatt`, `H5F.open`, and `H5F.is_hdf5`
- Dictionaries in JSON files can now be read and written using the
`readdictionary` and `writedictionary` functions
- Symbolic links support
+ new `createSymbolicLink` and `isSymbolicLink` functions
+ new `ResolveSymbolicLinks` name-value argument with the `delete` and
`rmdir` functions
+ new `CopyLinkBehavior` name-value argument with the `copyfile` function
+ new `MoveLinkBehavior` name-value argument with the `movefile` function
- When reading spreadsheet files, the behavior for merged cells can now be
controlled using new `MergedCellColumnRule` and `MergedCellRowRule`
name-value arguments of `readtable`, `readtimetable`, `readmatrix`,
`readcell`, `readvars` and `detectImportOptions`
- The `zip` and `unzip` functions now support password-encrypted files
- The `sftp` function now accepts a timeout value and supports passphrases and
certificates
- The `summary` function now works on array data, including `numeric`, `logical`,
`datetime`, `duration`, and `calendarDuration` types
- The `isbetween` function now works on numeric, nonnumeric, or tabular input data
- The `rmmissing` and `rmoutliers` functions now accept an argument for
defining the location of missing entries or outliers using array or table
- The `table` and `timetable` data types now have a `VariableTypes` property
for specifying the data types of their variables
- New `violinplot` function for creating violin plots for grouped numeric data
- New `compassplot` function to plot one or more sets of arrows originating
from the origin in polar coordinates
- New `constantplane` function to create infinite planes for highlighting
regions of interest in 3-D plots
- New `IconColumnWidth` property of a `Legend` object for controlling the width
of the legend icons and the width of the legend box
- New `Labels` and `LabelLocation` properties of a `Bar` object for adding
labels to ends of bars in bar charts
- The `tiledlayout` can now be called without dimensions or tile arrangement
argument
- The MAT-file version can now be specified with the `savefig` function
# MATLAB 24.1 (R2024a)
- Local functions can now be defined anywhere in scripts
- Packages (“+” folders) are now called “namespaces” (this is only a change in
terminology, not in functionality)
- New `createArray` function for generating arrays of specified class and size
- New `islocalmin2` and `islocalmax2` for finding local extrema in 2 dimensions
- New `clip` function for clipping values to a specific range
- New `Weights` parameter to the `mean` and `median` functions
- The `iqr` function can now return the first and third quartiles of the input
data by using a 2nd output argument
- New `openedFiles` function that returns the file identifiers of all open
files as a row vector
- New `pagelsqminnorm` that calculate minimum-norm least-squares solutions to
systems of linear equations in N-D arrays
- New `pagepinv` function that calculates Moore-Penrose pseudoinverses of pages
of N-D array
- The `spdiags` function now supports implicit expansion for the diagonal
elements argument Bin. You can specify the diagonal elements as a matrix,
vector, or scalar, and the function expands the values if the argument is
specified as a vector or scalar.
- New `fpolarplot` function for plotting mathematical expressions in polar
coordinates
- The Python Interface now converts between MATLAB and Python dictionaries, and
between MATLAB tables and Python Pandas DataFrames
# MATLAB 23.2 (R2023b)
- New dictionary functions: `configureDictionary`, `lookup`, `insert`, `remove`
- New `mustBeSparse` validation function
- New `resize`, `paddata` and `trimdata` functions for changing the size of
data by adding or removing elements
- New `smoothdata2` function for smoothing noisy data in two dimensions
- New `kde` function for estimating a probability function by using kernel density estimation for univariate data
- New syntax for the `rng` and `tallrng` functions where only the algorithm is
specified (but not the seed, which then defaults to zero)
- The `readstruct` and `writestruct` functions can now manipulate JSON files
- New `cmdsep` function which returns the (shell) command separator for the
current platform
- New `expmv` function for computing a matrix exponential multiplied by a
vector
- New `piechart` and `donutchart` functions for creating configurable,
interactive pie and donut charts
- New `Direction` property of the `legend` function for controlling the order
of legend entries
- New `xscale`, `yscale` and `zscale` functions for quickly change between
logarithmic and linear axes scales after plotting
- New `xsecondarylabel`, `ysecondarylabel`, and `zsecondarylabel` functions for
creating, deleting, or modifying secondary axis labels
- New `xregion` and `yregion` functions for creating unbounded regions and
specifying multiple regions as matrix
- New `gitrepo` object for manipulating git repositories
# MATLAB 9.14 (R2023a)
- Warning about indexing with no subscripts (`MATLAB:subscripting:noSubscriptsSpecified`) has been removed
- New `combinations` function for generating all element combinations of arrays
- `head` and `tail` functions now work on arrays
- New `pageeig` function for calculating eigenvalues and eigenvectors of the
pages of N-D arrays. In this context, the N-D array is treated as a container
for several 2-D matrices.
- The `randi` function can now create random logical arrays
- Many functions for descriptive statistics and arithmetic (e.g. `max`, `min`, `mean`, `std`, `var`, `median`, `sum`, `prod`, `cummax`, `cummin`, `cumsum`, `cumprod`) now accept the `omitmissing` and `includemissing` options (the former being the default) (the older `omitnan` and `includenan` options are still supported)
# MATLAB 9.13 (R2022b)
- New `dictionary` object (hash table)
- Validation of output arguments in functions and class methods
- New `mape` and `rmse` functions for calculating forecast errors (mean absolute percentage and root mean-squared)
- New `isuniform` function for determining if vector is uniformly spaced
- The `stackedplot` function can now plot variables from multiple input tables or timetables
- The `detrend` function can now detrend data in a table or timetable.
- New `pagenorm` function for calculating norms using pages of N-D arrays
- The `errorbar` function can now plot multiple lines with error bars at once
- New `tightPosition` function for getting the location and size of axes plotting area
- New `tilenum` and `tilerowcol` functions for convert between rows and columns and tile numbers in tiled chart layouts
- New Code Analyzer app (and programmatic interface through `codeAnalyzer`)
# MATLAB 9.12 (R2022a)
- New `allfinite`, `anynan` and `anymissing` functions to examine the elements of an input array
- The `quantile`, `prctile` and `iqr` functions are now part of core MATLAB (they were previously in the Statistics and Machine Learning Toolbox
- The `rms` (root mean square) function is now part of core MATLAB (it was previously in the Signal Processing toolbox)
- The `std` and `var` functions now optionally return the mean as second output argument
- New `writelines` function for writing plain text to a file
- New `pagemldivide`, `pagemrdivide`, and `pageinv` functions: Solve linear equations and calculate matrix inverses using pages of N-D arrays
- New `tensorprod` function: Calculate tensor products between two arrays
- The `round` function has a new `TieBreaker` name-value argument to specify how to break ties.
- `null` and `orth` functions have a new option to specify tolerance to treat singular values below a threshold as zero
- The `norm` function can now calculate Frobenius norm on N-D arrays
- The `equilibrate` function now has an option with values of `"vector"` or `"matrix"` to specify whether the output arguments are returned as vectors or matrices
- The `rand`, `randi`, and `randn` functions now support complex input and a `RandStream` object for the `"like"` syntax
- The `eps`, `flintmax`, `intmax`, `intmin`, `realmax` and `realmin` functions now accept the `"like"` syntax to return scalars based on a prototype object
- `qr` and `gsvd` have a new `"econ"` option for economy-size decompositions
- The syntax `R = qr(A)` now always returns `R` as an upper-triangular matrix, regardless of whether `A` is full or sparse (behaviour change)
- New Code Compatibility Analyzer app
# MATLAB 9.11 (R2021b)
- New `parfeval` syntax for parallelizing calls to a function
- New `trenddecomp` function for trend/cycle decomposition
- New `ComparisonMethod` option to `min` and `max` functions
- New `sftp` function for transferring files from/to SSH servers
- New `outputFormat` option of the `svd` function
- New `exportgraphics` function to append graphics to an existing PDF file
- New `pyrun` and `pyrunfile` functions to run Python code
# MATLAB 9.10 (R2021a)
- New `name=value` syntax for passing name-value arguments
- `format` function can now get and set display format
- `fillmissing` function now accepts a custom method
- `normalize` is now able to normalize multiple data sets with same parameters
- XML support in `readtable`, `readtimetable`, `writetable`, `writetimetable`,
`detectImportOptions`
- Read over HTTP or HTTPS support for `readtable`, `readtimetable`, `readvars`,
`readstruct`, `readmatrix`, `readcell`, `readlines`, `detectImportOptions`
and others
- New `PrettyPrint` option to `jsonencode` for adding indentation
# MATLAB 9.9 (R2020b)
- New `pattern` and `extract` functions for string manipulation
- New `mustBe*` functions for input validation
- New `height` and `width` functions
- New `readstruct` and `writestruct` functions for reading/writing structured
data in XML files
- New `readlines` function to read a whole text file as a string array
- New `pagemtimes` function for batch matrix multiplication
- New `svdsketch` function for computing SVD factors of low-rank matrix sketch
- New `matlabRelease` and `isMATLABReleaseOlderThan` functions, meant as
replacements for `ver` and `verLessThan` respectively
- C Matrix API `mxCreateString` function now accepts UTF-8 encoded data
- C MEX API `mexPrintf`, `mexEvalString`, `mexEvalStringWithTrap`,
`mexErrMsgIdAndTxt` and `mexWarnMsgIdAndTxt` functions now accept UTF-8
encoded data
# MATLAB 9.8 (R2020a)
- The `sparse` function now accepts vectors of integer data type for its `i` and `j` arguments
- Support for sparse complex arrays
# MATLAB 9.7 (R2019b)
- It’s now possible to use the dot-indexing operator on a function call, e.g.
`createStruct(3).aField`
- The `size` function now accepts a vector dimension argument to query multiple
array dimension lengths at a time
- It’s now possible to restrict the possible values of input arguments to a
function, using function argument validation
- Numbers can be specified using hexadecimal or binary literals
- New `matches` function to determine if two input strings are equal
- New `namedargs2cell` function to convert structure containing name-value
pairs to cell array
- The `error` function now accepts a suggested fix for an uncaught exception
(should be the first argument, as a `Correction` instance)
- New `groupfilter` function for filtering data in a table, timetable, or
matrix by group
- New `sheetnames` function to get names of worksheets from spreadsheet file
- New `makima` function for performing modified Akima cubic Hermite
interpolation
- New `tiledlayout` function for creating tiled chart layout (now recommended
over `subplot`)
# MATLAB 9.6 (R2019a)
- New `append` function for combining strings
- The `min` and `max` functions:
+ now return index information corresponding to the minimum and maximum
values When simultaneously operating on more than one dimension
+ now return the linear indices corresponding to the minimum and maximum values of
the input array using the `'linear'` option
- New `readmatrix`, `readvars`, and `readcell` functions for reading tabular
data as a matrix, variables, or a cell array
- New `writematrix` and `writecell` functions for writing tabular data from a
matrix or cell array to a text or spreadsheet file
- New functions `matchpairs` and `equilibrate` for solving assignment problems
- New `xcorr` and `xcov` functions for compute cross-correlation and
cross-covariance (they were previously in the Signal Processing toolbox, now
they are in MATLAB core)
- The `detrend` function can now remove piecewise polynomial trends, set
continuity requirements, and specify sample points
- It is now possible to provide a suggested fix for an uncaught exception in
the `MException` class, using the `addCorrection` method and the `Correction` class
- New `parallelplot` function for visualizing tabular or matrix data with
multiple columns by using a parallel coordinates plot
- The `grouptransform` function now operates on arrays
# MATLAB 9.5 (R2018b)
- It is now possible to use string arrays where character vectors or cell
arrays of character vectors were previously accepted; using double quotes
everywhere is now encouraged
- New `convertContainedStringsToChars` function to convert string arrays at any
level of cell array or structure
- The following functions now accept a vector dimension argument to specify
multiple operating dimensions at a time, as well as the option `'all'` to
specify all dimensions of an array: `all`, `any`, `bounds`, `max`, `mean`,
`median`, `min`, `mode`, `prod`, `std`, `sum`, `var`
- New `sinpi` and `cospi` functions for computing the sine and cosine of multiples of π
- `readwrite` and `writetable` are now able to manipulate Excel files on Windows without launching Microsoft Excel
- New `grouptransform` function for transforming by groups on tables and timetables
- New `groupsummary` function to perform group summary computations on matrices
- New `rmoutliers` function for removing outliers in an array, table, or timetable
# MATLAB 9.4 (R2018a)
- New interleaved complex ABI for MEX files
- New C++ MEX interface
- New `normalize` function for normalizing array, table, and timetable data
- Possibility of creating complex empty arrays using functions such as `zeros`
and `ones` with the `'like'` option, or with the `complex([])` syntax
# MATLAB 9.3 (R2017b)
- New `isfile` and `isfolder` functions
- New `decomposition` object to solve linear systems repeatedly with improved
performance
- New `lsqminnorm` function to find minimum-norm solution of underdetermined
linear system
- New `dissect` function to reorder sparse matrix columns using nested
dissection ordering
- New `vecnorm` function to compute vector-wise norms of arrays
- New values for the `sigma` option of `eigs`
- The `eigs` and `svds` functions now accept name-value pairs for options
- The `griddedInterpolant`, `interp1`, `interp2`, `interp3`, and `interpn`
functions now support the interpolation method `'makima'`, which is the
modified Akima cubic Hermite interpolation method.
- New `tallrng` function for controlling random number generation for tall arrays
- New `isStringScalar` function for determining whether input is a string array
with one element
- New `convertStringsToChars` and `convertCharsToStrings` functions to enable
one’s code to accept all text types as inputs without otherwise altering the
code
- The `arrayfun`, `cellfun`, and `structfun` functions can return object arrays
of any data type, so long as the objects can be concatenated
- New `geobubble`, `wordcloud` and `binscatter` graphics functions
- The `bar` function makes it possible to control individual bar colors
- The `jsonencode` function encodes MATLAB `NaN` and `Inf` values in JSON as
null, unless asked otherwise with the `'ConvertInfAndNaN'` option set to false.
- New `ischange` function to detect abrupt changes in data
- New `islocalmin` and `islocalmax` functions to detect local minima and maxima in data
- New `mink` and `maxk` functions for finding the k smallest or largest elements in an array
# MATLAB 9.2 (R2017a)
- String arrays can now be constructed using double quotes
- New `bounds` function for simultaneously determine the smallest and largest
elements of an array
- New `'omitnan'` option for the `prod` and `cumprod` functions
- New `movmad` and `movprod` functions for computing moving median absolute
deviation and moving product of an array
- New `missing` function to represent missing data in various types of
containers and objects
- New `issortedrows` to determine if matrix or table rows are sorted
- New `'ComparisonMethod'` and `'MissingPlacement'` options for the `sort` and
`sortrows` functions
- New `'monotonic'`, `'strictmonotonic'`, `'strictascend'`, and
`'strictdescend'` options to the `issorted` function
- The data type of the output argument for the `compose`, `extractAfter`,
`extractBefore`, `extractBetween`, `join`, `split`, and `splitlines`
functions is now the same as the type of input arguments (they would always
return string arrays in R2016b)
- New `head` and `tail` functions for returning the top or bottom rows of table
or timetable
- New `heatmap` function
- New `-nocompression` option to the `save` command
- `jsondecode` now converts JSON null values in numeric arrays to `NaN`
- New `isoutlier` and `filloutliers` functions for detecting and replacing
outliers in an array or table
- New `smoothdata` function for smoothing noisy data in an array or table with
filtering or local regression
- New `summary` function for calculating summary statistics and variable
information in tables and timetables
# MATLAB 9.1 (R2016b)
- Adds “automatic broadcasting”, also known as “implicit expansion” (`bsxfun`
becomes therefore essentially useless)
- It is now possible to define local functions in scripts
- New `contains` function
- New `join`, `split`, `splitlines`, `compose`, `extractAfter`,
`extractBefore`, `extractBetween` functions
- New `jsondecode` and `jsonencode` functions
- Introduces string arrays (with function `string`)
- New `ismissing`, `standardizeMissing`, `fillmissing`, and `rmmissing`
functions for finding, filling, and removing missing data from arrays or
tables
- The `dir` function now accepts wildcards
- New `timetable` data container and `timerange` function
# MATLAB 9.0 (R2016a)
- No more 32-bit support
- `writetable` is now able to write Excel files on GNU/Linux and macOS
# MATLAB 8.6 (R2015b)
# MATLAB 8.5 (R2015a)
- New `mxIsScalar` function in MEX interface (but the function was apparently already present in R2014a, though not officially supported nor defined in headers)
- New `webwrite` function
- First version to officially support Windows 10, see https://fr.mathworks.com/matlabcentral/answers/223444-is-matlab-compatible-with-windows-10
- Many functions for descriptive statistics and arithmetic (e.g. `max`, `min`, `mean`, `std`, `var`, `median`, `sum`) now accept the `omitnan` and `includenan` options (the former being the default)
# MATLAB 8.4 (R2014b)
- New `webread` function
# MATLAB 8.3 (R2014a)
- Support for new Ethernet interface naming under GNU/Linux (older versions are
difficult to install on modern GNU/Linux systems), see https://fr.mathworks.com/matlabcentral/answers/73938-activating-on-linux-without-eth0
- New `isdiag`, `isbanded`, `issymmetric`, `ishermitian`, `istril`, `istriu`,
and `bandwidth` functions for testing matrix structure
- New `sylvester` function for solving the Sylvester equation
# MATLAB 8.2 (R2013b)
- New `readtable` and `writetable` function (the latter not yet capable of writing Excel files on GNU/Linux and macOS, and needing Microsoft Excel installed on Windows)
# MATLAB 8.1 (R2013a)
- New option `stable` to `intersect` and other set manipulation functions
- New `strsplit` and `strjoin` functions
# MATLAB 8.0 (R2012b)
- Syntax for abstract classes
# MATLAB 7.14 (R2012a)
- `xlsread` now natively supports `.xlsx` files on all platforms (no need to
have Microsoft Office installed)
# MATLAB 7.13 (R2011b)
- New `narginchk` function
# MATLAB 7.12 (R2011a)
- New random number generators interface (`rng`, `getGlobalStream` and `setGlobalStream` functions)
- New `ichol` function
# MATLAB 7.11 (R2010b)
- New `isrow`, `iscolumn` and `ismatrix` functions
# MATLAB 7.10 (R2010a)
- Ships with MKL 10.2, which fixes a nasty bug in `dgges` (for which a
workaround has been implemented in the `mjdgges` MEX)
This page lists changes introduced in MATLAB versions that are the most
relevant to Dynare development. This information mostly comes from the [MATLAB
Release Notes](https://fr.mathworks.com/help/matlab/release-notes.html).
# MATLAB 24.2 (R2024b)
- New [package manager](https://www.mathworks.com/help/matlab/matlab_prog/use-the-matlab-package-manager-to-organize-and-distribute-code.html)
- New `isapprox` function for determining approximate equality of elements in two arrays
- New `RegularizationFactor` name-value argument to the `lsqminnorm` function,
for Tikhonov regularization to the least-squares solution
- Many I/O functions can now directly read data online using an HTTP/HTTPS URL,
notably:
+ `isfile`, `dir`, `copyfile`, and `exist`
+ `fopen`, `fread`, `fgets`, `fgetl`, `feof`, `fclose`, `ferror`, `fseek`, `ftell`, `fscanf`,
`frewind`, and `fileread`
+ `h5disp`, `h5info`, `h5read`, `h5readatt`, `H5F.open`, and `H5F.is_hdf5`
- Dictionaries in JSON files can now be read and written using the
`readdictionary` and `writedictionary` functions
- Symbolic links support
+ new `createSymbolicLink` and `isSymbolicLink` functions
+ new `ResolveSymbolicLinks` name-value argument with the `delete` and
`rmdir` functions
+ new `CopyLinkBehavior` name-value argument with the `copyfile` function
+ new `MoveLinkBehavior` name-value argument with the `movefile` function
- When reading spreadsheet files, the behavior for merged cells can now be
controlled using new `MergedCellColumnRule` and `MergedCellRowRule`
name-value arguments of `readtable`, `readtimetable`, `readmatrix`,
`readcell`, `readvars` and `detectImportOptions`
- The `zip` and `unzip` functions now support password-encrypted files
- The `sftp` function now accepts a timeout value and supports passphrases and
certificates
- The `summary` function now works on array data, including `numeric`, `logical`,
`datetime`, `duration`, and `calendarDuration` types
- The `isbetween` function now works on numeric, nonnumeric, or tabular input data
- The `rmmissing` and `rmoutliers` functions now accept an argument for
defining the location of missing entries or outliers using array or table
- The `table` and `timetable` data types now have a `VariableTypes` property
for specifying the data types of their variables
- New `violinplot` function for creating violin plots for grouped numeric data
- New `compassplot` function to plot one or more sets of arrows originating
from the origin in polar coordinates
- New `constantplane` function to create infinite planes for highlighting
regions of interest in 3-D plots
- New `IconColumnWidth` property of a `Legend` object for controlling the width
of the legend icons and the width of the legend box
- New `Labels` and `LabelLocation` properties of a `Bar` object for adding
labels to ends of bars in bar charts
- The `tiledlayout` can now be called without dimensions or tile arrangement
argument
- The MAT-file version can now be specified with the `savefig` function
# MATLAB 24.1 (R2024a)
- Local functions can now be defined anywhere in scripts
- Packages (“+” folders) are now called “namespaces” (this is only a change in
terminology, not in functionality)
- New `createArray` function for generating arrays of specified class and size
- New `islocalmin2` and `islocalmax2` for finding local extrema in 2 dimensions
- New `clip` function for clipping values to a specific range
- New `Weights` parameter to the `mean` and `median` functions
- The `iqr` function can now return the first and third quartiles of the input
data by using a 2nd output argument
- New `openedFiles` function that returns the file identifiers of all open
files as a row vector
- New `pagelsqminnorm` that calculate minimum-norm least-squares solutions to
systems of linear equations in N-D arrays
- New `pagepinv` function that calculates Moore-Penrose pseudoinverses of pages
of N-D array
- The `spdiags` function now supports implicit expansion for the diagonal
elements argument Bin. You can specify the diagonal elements as a matrix,
vector, or scalar, and the function expands the values if the argument is
specified as a vector or scalar.
- New `fpolarplot` function for plotting mathematical expressions in polar
coordinates
- The Python Interface now converts between MATLAB and Python dictionaries, and
between MATLAB tables and Python Pandas DataFrames
# MATLAB 23.2 (R2023b)
- New dictionary functions: `configureDictionary`, `lookup`, `insert`, `remove`
- New `mustBeSparse` validation function
- New `resize`, `paddata` and `trimdata` functions for changing the size of
data by adding or removing elements
- New `smoothdata2` function for smoothing noisy data in two dimensions
- New `kde` function for estimating a probability function by using kernel density estimation for univariate data
- New syntax for the `rng` and `tallrng` functions where only the algorithm is
specified (but not the seed, which then defaults to zero)
- The `readstruct` and `writestruct` functions can now manipulate JSON files
- New `cmdsep` function which returns the (shell) command separator for the
current platform
- New `expmv` function for computing a matrix exponential multiplied by a
vector
- New `piechart` and `donutchart` functions for creating configurable,
interactive pie and donut charts
- New `Direction` property of the `legend` function for controlling the order
of legend entries
- New `xscale`, `yscale` and `zscale` functions for quickly change between
logarithmic and linear axes scales after plotting
- New `xsecondarylabel`, `ysecondarylabel`, and `zsecondarylabel` functions for
creating, deleting, or modifying secondary axis labels
- New `xregion` and `yregion` functions for creating unbounded regions and
specifying multiple regions as matrix
- New `gitrepo` object for manipulating git repositories
# MATLAB 9.14 (R2023a)
- Warning about indexing with no subscripts (`MATLAB:subscripting:noSubscriptsSpecified`) has been removed
- New `combinations` function for generating all element combinations of arrays
- `head` and `tail` functions now work on arrays
- New `pageeig` function for calculating eigenvalues and eigenvectors of the
pages of N-D arrays. In this context, the N-D array is treated as a container
for several 2-D matrices.
- The `randi` function can now create random logical arrays
- Many functions for descriptive statistics and arithmetic (e.g. `max`, `min`, `mean`, `std`, `var`, `median`, `sum`, `prod`, `cummax`, `cummin`, `cumsum`, `cumprod`) now accept the `omitmissing` and `includemissing` options (the former being the default) (the older `omitnan` and `includenan` options are still supported)
# MATLAB 9.13 (R2022b)
- New `dictionary` object (hash table)
- Validation of output arguments in functions and class methods
- New `mape` and `rmse` functions for calculating forecast errors (mean absolute percentage and root mean-squared)
- New `isuniform` function for determining if vector is uniformly spaced
- The `stackedplot` function can now plot variables from multiple input tables or timetables
- The `detrend` function can now detrend data in a table or timetable.
- New `pagenorm` function for calculating norms using pages of N-D arrays
- The `errorbar` function can now plot multiple lines with error bars at once
- New `tightPosition` function for getting the location and size of axes plotting area
- New `tilenum` and `tilerowcol` functions for convert between rows and columns and tile numbers in tiled chart layouts
- New Code Analyzer app (and programmatic interface through `codeAnalyzer`)
# MATLAB 9.12 (R2022a)
- New `allfinite`, `anynan` and `anymissing` functions to examine the elements of an input array
- The `quantile`, `prctile` and `iqr` functions are now part of core MATLAB (they were previously in the Statistics and Machine Learning Toolbox
- The `rms` (root mean square) function is now part of core MATLAB (it was previously in the Signal Processing toolbox)
- The `std` and `var` functions now optionally return the mean as second output argument
- New `writelines` function for writing plain text to a file
- New `pagemldivide`, `pagemrdivide`, and `pageinv` functions: Solve linear equations and calculate matrix inverses using pages of N-D arrays
- New `tensorprod` function: Calculate tensor products between two arrays
- The `round` function has a new `TieBreaker` name-value argument to specify how to break ties.
- `null` and `orth` functions have a new option to specify tolerance to treat singular values below a threshold as zero
- The `norm` function can now calculate Frobenius norm on N-D arrays
- The `equilibrate` function now has an option with values of `"vector"` or `"matrix"` to specify whether the output arguments are returned as vectors or matrices
- The `rand`, `randi`, and `randn` functions now support complex input and a `RandStream` object for the `"like"` syntax
- The `eps`, `flintmax`, `intmax`, `intmin`, `realmax` and `realmin` functions now accept the `"like"` syntax to return scalars based on a prototype object
- `qr` and `gsvd` have a new `"econ"` option for economy-size decompositions
- The syntax `R = qr(A)` now always returns `R` as an upper-triangular matrix, regardless of whether `A` is full or sparse (behaviour change)
- New Code Compatibility Analyzer app
# MATLAB 9.11 (R2021b)
- New `parfeval` syntax for parallelizing calls to a function
- New `trenddecomp` function for trend/cycle decomposition
- New `ComparisonMethod` option to `min` and `max` functions
- New `sftp` function for transferring files from/to SSH servers
- New `outputFormat` option of the `svd` function
- New `exportgraphics` function to append graphics to an existing PDF file
- New `pyrun` and `pyrunfile` functions to run Python code
# MATLAB 9.10 (R2021a)
- New `name=value` syntax for passing name-value arguments
- `format` function can now get and set display format
- `fillmissing` function now accepts a custom method
- `normalize` is now able to normalize multiple data sets with same parameters
- XML support in `readtable`, `readtimetable`, `writetable`, `writetimetable`,
`detectImportOptions`
- Read over HTTP or HTTPS support for `readtable`, `readtimetable`, `readvars`,
`readstruct`, `readmatrix`, `readcell`, `readlines`, `detectImportOptions`
and others
- New `PrettyPrint` option to `jsonencode` for adding indentation
# MATLAB 9.9 (R2020b)
- New `height` and `width` functions (can be used as a replacement for `rows` and `columns` that are present in Octave and that we reimplemented as missing functions; NB: the MATLAB documentation erroneously says that these functions were introduced in R2013b)
- New `pattern` and `extract` functions for string manipulation
- New `mustBe*` functions for input validation
- New `readstruct` and `writestruct` functions for reading/writing structured
data in XML files
- New `readlines` function to read a whole text file as a string array
- New `pagemtimes` function for batch matrix multiplication
- New `svdsketch` function for computing SVD factors of low-rank matrix sketch
- New `matlabRelease` and `isMATLABReleaseOlderThan` functions, meant as
replacements for `ver` and `verLessThan` respectively
- C Matrix API `mxCreateString` function now accepts UTF-8 encoded data
- C MEX API `mexPrintf`, `mexEvalString`, `mexEvalStringWithTrap`,
`mexErrMsgIdAndTxt` and `mexWarnMsgIdAndTxt` functions now accept UTF-8
encoded data
# MATLAB 9.8 (R2020a)
- The `sparse` function now accepts vectors of integer data type for its `i` and `j` arguments
- Support for sparse complex arrays
# MATLAB 9.7 (R2019b)
- It’s now possible to use the dot-indexing operator on a function call, e.g.
`createStruct(3).aField`
- The `size` function now accepts a vector dimension argument to query multiple
array dimension lengths at a time
- It’s now possible to restrict the possible values of input arguments to a
function, using function argument validation
- Numbers can be specified using hexadecimal or binary literals
- New `matches` function to determine if two input strings are equal
- New `namedargs2cell` function to convert structure containing name-value
pairs to cell array
- The `error` function now accepts a suggested fix for an uncaught exception
(should be the first argument, as a `Correction` instance)
- New `groupfilter` function for filtering data in a table, timetable, or
matrix by group
- New `sheetnames` function to get names of worksheets from spreadsheet file
- New `makima` function for performing modified Akima cubic Hermite
interpolation
- New `tiledlayout` function for creating tiled chart layout (now recommended
over `subplot`)
# MATLAB 9.6 (R2019a)
- New `append` function for combining strings
- The `min` and `max` functions:
+ now return index information corresponding to the minimum and maximum
values When simultaneously operating on more than one dimension
+ now return the linear indices corresponding to the minimum and maximum values of
the input array using the `'linear'` option
- New `readmatrix`, `readvars`, and `readcell` functions for reading tabular
data as a matrix, variables, or a cell array
- New `writematrix` and `writecell` functions for writing tabular data from a
matrix or cell array to a text or spreadsheet file
- New functions `matchpairs` and `equilibrate` for solving assignment problems
- New `xcorr` and `xcov` functions for compute cross-correlation and
cross-covariance (they were previously in the Signal Processing toolbox, now
they are in MATLAB core)
- The `detrend` function can now remove piecewise polynomial trends, set
continuity requirements, and specify sample points
- It is now possible to provide a suggested fix for an uncaught exception in
the `MException` class, using the `addCorrection` method and the `Correction` class
- New `parallelplot` function for visualizing tabular or matrix data with
multiple columns by using a parallel coordinates plot
- The `grouptransform` function now operates on arrays
# MATLAB 9.5 (R2018b)
- It is now possible to use string arrays where character vectors or cell
arrays of character vectors were previously accepted; using double quotes
everywhere is now encouraged
- New `convertContainedStringsToChars` function to convert string arrays at any
level of cell array or structure
- The following functions now accept a vector dimension argument to specify
multiple operating dimensions at a time, as well as the option `'all'` to
specify all dimensions of an array: `all`, `any`, `bounds`, `max`, `mean`,
`median`, `min`, `mode`, `prod`, `std`, `sum`, `var`
- New `sinpi` and `cospi` functions for computing the sine and cosine of multiples of π
- `readwrite` and `writetable` are now able to manipulate Excel files on Windows without launching Microsoft Excel
- New `grouptransform` function for transforming by groups on tables and timetables
- New `groupsummary` function to perform group summary computations on matrices
- New `rmoutliers` function for removing outliers in an array, table, or timetable
# MATLAB 9.4 (R2018a)
- New interleaved complex ABI for MEX files
- New C++ MEX interface
- New `normalize` function for normalizing array, table, and timetable data
- Possibility of creating complex empty arrays using functions such as `zeros`
and `ones` with the `'like'` option, or with the `complex([])` syntax
# MATLAB 9.3 (R2017b)
- New `isfile` and `isfolder` functions
- New `decomposition` object to solve linear systems repeatedly with improved
performance
- New `lsqminnorm` function to find minimum-norm solution of underdetermined
linear system
- New `dissect` function to reorder sparse matrix columns using nested
dissection ordering
- New `vecnorm` function to compute vector-wise norms of arrays
- New values for the `sigma` option of `eigs`
- The `eigs` and `svds` functions now accept name-value pairs for options
- The `griddedInterpolant`, `interp1`, `interp2`, `interp3`, and `interpn`
functions now support the interpolation method `'makima'`, which is the
modified Akima cubic Hermite interpolation method.
- New `tallrng` function for controlling random number generation for tall arrays
- New `isStringScalar` function for determining whether input is a string array
with one element
- New `convertStringsToChars` and `convertCharsToStrings` functions to enable
one’s code to accept all text types as inputs without otherwise altering the
code
- The `arrayfun`, `cellfun`, and `structfun` functions can return object arrays
of any data type, so long as the objects can be concatenated
- New `geobubble`, `wordcloud` and `binscatter` graphics functions
- The `bar` function makes it possible to control individual bar colors
- The `jsonencode` function encodes MATLAB `NaN` and `Inf` values in JSON as
null, unless asked otherwise with the `'ConvertInfAndNaN'` option set to false.
- New `ischange` function to detect abrupt changes in data
- New `islocalmin` and `islocalmax` functions to detect local minima and maxima in data
- New `mink` and `maxk` functions for finding the k smallest or largest elements in an array
# MATLAB 9.2 (R2017a)
- String arrays can now be constructed using double quotes
- New `bounds` function for simultaneously determine the smallest and largest
elements of an array
- New `'omitnan'` option for the `prod` and `cumprod` functions
- New `movmad` and `movprod` functions for computing moving median absolute
deviation and moving product of an array
- New `missing` function to represent missing data in various types of
containers and objects
- New `issortedrows` to determine if matrix or table rows are sorted
- New `'ComparisonMethod'` and `'MissingPlacement'` options for the `sort` and
`sortrows` functions
- New `'monotonic'`, `'strictmonotonic'`, `'strictascend'`, and
`'strictdescend'` options to the `issorted` function
- The data type of the output argument for the `compose`, `extractAfter`,
`extractBefore`, `extractBetween`, `join`, `split`, and `splitlines`
functions is now the same as the type of input arguments (they would always
return string arrays in R2016b)
- New `head` and `tail` functions for returning the top or bottom rows of table
or timetable
- New `heatmap` function
- New `-nocompression` option to the `save` command
- `jsondecode` now converts JSON null values in numeric arrays to `NaN`
- New `isoutlier` and `filloutliers` functions for detecting and replacing
outliers in an array or table
- New `smoothdata` function for smoothing noisy data in an array or table with
filtering or local regression
- New `summary` function for calculating summary statistics and variable
information in tables and timetables
# MATLAB 9.1 (R2016b)
- Adds “automatic broadcasting”, also known as “implicit expansion” (`bsxfun`
becomes therefore essentially useless)
- It is now possible to define local functions in scripts
- New `contains` function
- New `join`, `split`, `splitlines`, `compose`, `extractAfter`,
`extractBefore`, `extractBetween` functions
- New `jsondecode` and `jsonencode` functions
- Introduces string arrays (with function `string`)
- New `ismissing`, `standardizeMissing`, `fillmissing`, and `rmmissing`
functions for finding, filling, and removing missing data from arrays or
tables
- The `dir` function now accepts wildcards
- New `timetable` data container and `timerange` function
# MATLAB 9.0 (R2016a)
- No more 32-bit support
- `writetable` is now able to write Excel files on GNU/Linux and macOS
# MATLAB 8.6 (R2015b)
# MATLAB 8.5 (R2015a)
- New `mxIsScalar` function in MEX interface (but the function was apparently already present in R2014a, though not officially supported nor defined in headers)
- New `webwrite` function
- First version to officially support Windows 10, see https://fr.mathworks.com/matlabcentral/answers/223444-is-matlab-compatible-with-windows-10
- Many functions for descriptive statistics and arithmetic (e.g. `max`, `min`, `mean`, `std`, `var`, `median`, `sum`) now accept the `omitnan` and `includenan` options (the former being the default)
# MATLAB 8.4 (R2014b)
- New `webread` function
# MATLAB 8.3 (R2014a)
- Support for new Ethernet interface naming under GNU/Linux (older versions are
difficult to install on modern GNU/Linux systems), see https://fr.mathworks.com/matlabcentral/answers/73938-activating-on-linux-without-eth0
- New `isdiag`, `isbanded`, `issymmetric`, `ishermitian`, `istril`, `istriu`,
and `bandwidth` functions for testing matrix structure
- New `sylvester` function for solving the Sylvester equation
# MATLAB 8.2 (R2013b)
- New `readtable` and `writetable` function (the latter not yet capable of writing Excel files on GNU/Linux and macOS, and needing Microsoft Excel installed on Windows)
# MATLAB 8.1 (R2013a)
- New option `stable` to `intersect` and other set manipulation functions
- New `strsplit` and `strjoin` functions
# MATLAB 8.0 (R2012b)
- Syntax for abstract classes
# MATLAB 7.14 (R2012a)
- `xlsread` now natively supports `.xlsx` files on all platforms (no need to
have Microsoft Office installed)
# MATLAB 7.13 (R2011b)
- New `narginchk` function
# MATLAB 7.12 (R2011a)
- New random number generators interface (`rng`, `getGlobalStream` and `setGlobalStream` functions)
- New `ichol` function
# MATLAB 7.11 (R2010b)
- New `isrow`, `iscolumn` and `ismatrix` functions
# MATLAB 7.10 (R2010a)
- Ships with MKL 10.2, which fixes a nasty bug in `dgges` (for which a
workaround has been implemented in the `mjdgges` MEX)