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