# Tensor Toolbox for MATLAB, Version 3.2.1
April 5, 2021
by Brett W. Bader, Tamara G. Kolda, Daniel M. Dunlavy, et al.
Sandia National Laboratories
The **Tensor Toolbox for MATLAB** is open source software; see [LICENSE.txt](LICENSE.txt) for the terms of the license (2-clause BSD).
For a list of contributors, see [CONTRIBUTORS.md](CONTRIBUTORS.md).
For instructions on contributing, see [CONTRIBUTION_GUIDE.md](CONTRIBUTION_GUIDE.md).
For all other information, including download and usage instructions, see [www.tensortoolbox.org](https://www.tensortoolbox.org/).
Release notes follow below.
## Changes from Version 3.2 (February 10, 2021)
- Changes to [`export_data`](export_data.m): support formatting of data and lambda values, improved write times for ['sptensor'](@sptensor/) when exporting (fixes #51)
- New help pages:
* [Importing and Exporting Tensor Data](https://www.tensortoolbox.com/import_export_doc.html)
## Changes from Version 3.1 (June 4, 2019)
- Added new functionality for implicit symmetric CP tensor computation per the paper: S. Sherman, T. G. Kolda. Estimating Higher-Order Moments Using Symmetric Tensor Decomposition, SIMAX, 2020 (see !43)
* New top-level function [`cp_isym`](cp_isym.m)
* New functions within [`symktensor`](@symktensor/) class: [`f_implicit`](@symktensor/f_implicit.m), [`fg_explicit`](@symktensor/fg_explicit.m), [`fg_implicit`](@symktensor/fg_implicit.m), [`g_implicit`](@symktensor/g_implicit.m), [`randextract`](@symktensor/randextract.m), [`update`](@symkensor/update.m)
* New help page: [Implicit Symmetric CP Decomposition for Symmetric K-Tensors](https://www.tensortoolbox.org/cp_isym_doc.html)
- Added interfaces to various optimization methods, including our own implementation of ADAM (see also !43)
* New top-level *hidden* functions that serve as somewhat standardized wrappers to optimization methods: [`tt_opt_adam`](tt_opt_adam.m), [`tt_opt_fminunc`](tt_opt_fminunc.m), [`tt_opt_lbfgs`](tt_opt_lbfgs.m), [`tt_opt_lbfgsb.m`](tt_opt_lbfgsb.m)
* New help pages: [Optimization Methods for Tensor Toolbox](https://www.tensortoolbox.com/opt_options_doc.html) and [Developer Information for Optimization Methods in Tensor Toolbox](https://www.tensortoolbox.com/tt_opt_doc.html)
- Other new help pages:
* [Shifted Power Method for Generalized Tensor Eigenproblem](https://www.tensortoolbox.com/eig_geap_doc.html) documenting [`eig_geap`](eig_geap.m) (fixes #11, see !54)
* [Symmetric CP Decomposition for Symmetric Tensors](https://www.tensortoolbox.com/cp_sym_doc.html) documenting [`cp_sym`](cp_sym.m) (see !43)
- Overhaul of documentation (see !53), including [new logo](doc/html/Tensor-Toolbox-for-MATLAB-Banner.png) (see !55, fixes #18)
* Plus updated [Contribution Guide](CONTRIBUTION_GUIDE.md) with better instructions (see !44)
* Added funding and other acknowledgments to [`CONTRIBUTORS.md`](CONTRIBUTORS.md)
* Removed `RELEASE_NOTES.txt`, putting release notes into `README.md` (this file) in markdown format
* Removed `INSTALL.txt`, which was out of date
* Added [Release Instructions](maintenance/RELEASE_INSTRUCTIONS.md) and [Documentation Instructions](maintenance/DOCUMENTATION_INSTRUCTIONS.md)
* Added functions to update toolbox link in `maintenance`
* Removed `doc/html/bibtex.html`, `doc/html/getting_started.html`, `doc/html/helpscreen.PNG`
- Various bug fixes and minor enhancements
* Fixed bug in [`@ktensor/score.m`](@ktensor/score.m) to handle zero lambda-values in both inputs (fixes #37)
* Added [`sptenmat` constructor](@sptenmat/sptenmat.m) check on valid input (fixes #33)
* Fixed wrong default lower bound in [`gcp_opt`](gcp_opt.m)
* Specified in [`tucker_sym`](tucker_sym.m) that input must be a `tensor` rather than a `symtensor`, which is admittedly counterintuitive (fixes #44)
* Fix [`sparse/ttt`](@sptensor/ttt.m) and [`sparse/ttm`](@sptensor/ttm.m) for complex tensors (fixes #40)
* Fix [`ktensor/full`](@ktensor/full.m) for complex tensors
* Updated documentation links so that every file now links to www.tensortoolbox.org (fixes #14, see !57)
* Added support to export a `ktensor` in [`export_data.m`](export_data.m) plus relevant tests (fixes #23)
* Updated [`symktensor/normalize`](@symktensor/normalize.m) to be faster by using `bsxfun`
* Added/updated paper links: [`tensor`](@tensor/tensor.m), [`sptensor`](@sptensor/sptensor.m), [`cp_arls`](cp_arls.m), [`cp_sym`](cp_sym.m)
## Changes from Version 2.6 (February 6, 2015)
- Changed license conditions: now open source BSD license.
- New KTENSOR/VIZ function for visualizing the factors produced by the
CP decomposition.
- Added new CP_SYM and TUCKER_SYM functions for symmetric tensor
decompositions. Added new SYMTENSOR and SYMKTENSOR classes with
limited functionality to support symmetric tensors.
- Added new SUMTENSOR class that works with an implicit sum of tensors
without actually forming the result.
- Added new CP-ARLS method that does alternating *RANDOMIZED* least
squares fitting for the CP decomposition per Battaglino et al.
- New GCP_OPT method for generalized CP.
- New CREATE_PROBLEM_BINARY method for generating problems where the
low-rank model corresponds to the odds of a 1.
- Improve KTENSOR/FULL function.
- Added SPTENSOR/SPONES function that replaces nonzero sparse tensor
elements with ones.
- Removed memory-efficient Tucker (met) code.
- Fixed formatting of lambda in ktensor/disp.
- Fixed type of subs in import_data for sptensor data.
- Made call to fixsigns in cp_als optional.
## Changes from Version 2.5 (February 1, 2012)
Top Level
- Added new EIG_GEAP function for computing generalized tensor
eigenpairs. Renamed SSHOPM to EIG_SSHOPM and added support for
adaptive shift (now the default). Renamed SSHOPMC to EIG_SSHOPMC.
- Major updates to CP_APR, including changing the default to use
2nd-order optimization per paper of Hansen, Plantenga, & Kolda. See
method help for more information.
- Minor changes to CP_ALS: (1) Fixed bug in normalization step. (2)
Updated some calculations per work of Phan Anh Huy. (3) Forced
printing of last iteration so long as printitn > 0.
- Updated MTTKRP and KHATRIRAO, per work of Phan Anh Huy.
- Fixed bug in CREATE_PROBLEM for 'Sparse_Generation'.
- Added SPTENSOR support EXPORT_DATA and IMPORT_DATA. Added KTENSOR
support to IMPORT_DATA.
- Updated random number generator references to the new MATLAB
implementsion in CREATE_PROBLEM and CREATE_GUESS.
- Added instructions for adding MET to the pat in INSTALL.txt.
- Fixed function name for TT_FAC_TO_VEC per Evrim Acar bug report.
- Added new function MATRANDNORM.
- Renamed TT_CCONG to MATRANDCONG, TT_RANDORTHMATH to MATRANDORTH.
- Removed TT_ASSIGNMENT_TYPE, TT_COMBINATOR, TT_CP_W*,
TT_CREATE_MISSING_DATA_PATTERN.
- Modernized documentation with class support.
Class: ktensor
- Fixed SUBSREF to properly handle lists of indices.
- Only call ARRANGE from NORMALIZE if there are multiple
components. Force ARRANGE to produce dense matrices. Fixes bug
reported by Jason Mattax on 3/1/2012.
- Fixed comments for NORMALIZE, SUBSREF.
- Added ISSYMMETRIC and SYMMETRIZE functions.
- Constructor can now take SYMKTENSOR as an input.
Class: sptensor
- Fixed bug in SUBSASGN discovered by Sebastien Bratieres pertaining
to empty tensors.
Class: tensor
- Fixed bug in ISSYMMETRIC with respect to groups.
Acknowledgments:
- The function @symtensor/private/multinomial.m is from Mukhtar Ullah
and was distributed via the MATLAB file exchange.
## Changes from Version 2.4 (March 22, 2010)
Top Level
- The "algorithms" directory has been eliminated. All routines are now
at the root level, meaning that only one directory has to be added
to the path to get all of Tensor Toolbox's standard functionality.
- Added new CREATE_PROBLEM and CREATE_GUESS routines that can be used
to generate test problems and initial guesses. These were first used
at the AIM 2010 Tensor Decomposition workshop. Added TT_
评论4