Tensor Toolbox version 2.3 by Brett W. Bader and Tamara G. Kolda. Copyright 2009, Sandia National Laboratories. Released July 8, 2009. ============================================ Changes from Version 2.2 (January 10, 2007) ============================================ General: - Added Memory Efficient Tucker (MET) package by Tamara Kolda and Jimeng Sun. Type 'help tucker_me' after installation for more information. - Fixed bug in tenzeros command so that it now returns an empty tensor when the initial size is emtpy. - Fixed bug in tt_assignment_type so that it works with a sparse tensor that is initially completely empty. - Added comments to tt_sub2ind and tt_ind2sub. - Removed errant ^M's at the end of every line of tt_subscheck. Algorithms: - Changed parafac_als to cp_als (old one can still be called but is deprecated). - Added an option to cp_als to only print the information every n iterations where n is a user-defined parameter. Also fixed bug in the case of R=1. - Added new cp_nmu function for computing a nonnegative tensor factorization based upon Lee & Seung's NMF multiplicative update. - Made calculation of residual in Tucker more efficient. Class: tensor - Adds reshape command. - Fixed find function so that it always returns a column vector. (Bug# 3969) - Fixed tenfun documentation. (Bug# 3339) Class: sptensor - Adds reshape and spmatrix commands. - Fixed bug in constructor so that it checks for subscripts out of range and other input problems. (Bug# 3925) - Fixed bug is subsasgn so that it works for a certain way of inserting complex values. (Bug #3868) - Fixed bug in disp function for sptensor that caused it not to accept the user input to display all nonzeros for large tensors. (Bug #4009) - Fixed bug in collapse so that it handles empty sptensor's correctly. - Fixed bug in rdivide so that it will work correctly when either argument is an empty tensor. - Fixed bug in squeeze so that it now works correctly for sptensor's with no nonzero elements. (Bug #3002) - Fixed bug in subsasgn for a sptensor so that it works even when the initial tensor is completely empty. - Fixed bug in ttt so that it works even when one of the sptensors has zero nonzeros. (Bug #3017) - Fixed bug in elemfun that didn't remove those nonzeros that had become zero (e.g., log 1 = 0). (Bug# 3235) Class: sptenmat - Fixed bug in sptenmat so that it works when it is passed an sptensor that doesn't have any entries. ============================================ Changes from Version 2.1 (December 1, 2006) ============================================ General: - Added INSTALL.txt with installation instructions. - Updated copyright date from 2006 to 2007 throughout. Classes: tensor and sptensor - Added transpose and ctranspose functions that throw an error (transpose is not supported for tensors, but previously would do nothing as if it *had* performed the transpose). - Added ldivide, rdivide, lmdivide, and rmdivide, though they all work only with scalars. Class: tensor - Added isequal. - Made find slightly more efficient in the case where the corresponding values are not also returned. - Fixed bug in assigning elements to 1-dimensional tensors. Class: sptensor - Cleaner display with disp or display functions. - Added checks against invalid sizes and subscripts for tensor construction and subscripted reference and assignment. - Fixed bug where the index 58 was confused with the character ':' in subscripted reference and assignment. - Made results of logical operators consistent with how sparse matrices work, i.e., produces a dense tensor iff the equivalent command on a sparse matrix would do the same. - Plus and minus now work with a scalar or dense tensor, and the result in those cases is dense. - Added ability to do .* with a scalar. - Made it so that isequal now works with dense tensors and will return true if the two tensors are equivalent. - Fixed bugs in double and squeeze on an all-zero sparse tensor. ============================================ Changes from Version 2.0 (September 6, 2006) ============================================ All - innerprod: Added checks that sizes match - Improved subscripted assignment for tensor and sptensor. Now supports assignment to a scalar (i.e., assign every element to that scalar) and growth in both the size and number of dimensions. Class: tensor - Added new function: nnz - tenfun (and most relational operations): Fixed major bug is dense-sparse comparisons. Class: sptensor - Added new functions: not, and, or, xor, eq, ne, le, lt, ge, gt, isequal - sptensor: Fixed bug where a 1D tensor was not correctly converted to a sparse tensor. Also, added ability to accept an MDA as an input and to accept a list of logical values as well as numerics. - subsref: Fixed bug on subscripted reference to an empty tensor. - ttt: Major overhaul that fixes a number of bugs and improves efficiency dramatically. - nvecs: Improved efficiency by converting to MATLAB sparse matrix and calling eigs on that rather than calling eigs with the aatx function. - disp/display: Fixed bug that caused tensors with a *single* element to display incorrectly. - full: Fixed bug that caused it to fail if called on a completely empty tensor. Class: ttensor - innerprod/norm/nvecs: Improved efficiency. - ttm: Removed errant debug print statements. Class: ktensor - datadisp.m: Minor changes to formatting. Other - License.txt: Removed an errant "7.3" that was in the text. - Fixed top-level contents file and added version information so that it will show up from MATLAB's ver command. ========================================= Changes from Version 1.0 (April 13, 2006) ========================================= Classes - Added support for sparse tensors (sptensor and sptenmat) - Renamed tensor_as_matrix to tenmat - Renamed tucker_tensor to ttensor - Renamed cp_tensor to ktensor - Many functions have substantially improved efficiency Changes to the tensor class - Removed functions: issamesize, order, shiftdim - Renamed functions: multiarrayop to tenfun - New functions: collapse, contract, find, full, innerprod, mttkrp, nvecs, scale Changes to the ktensor class (formerly cp_tensor) - Removed functions: issamesize, order - New functions: datadisp, double, end, fixsigns, innerprod, mttkrp, nvecs, times, ttm Changes to the ttensor class (formerly tucker_tensor) - Removed functions: issamesize, order - New functions: double, end, innerprod, mttkrp, norm, nvecs, ttm, ttv Changes to the tenmat class (formerly tensor_as_matrix) - New functions: end, minus, norm, plus, uminus, uplus Changes to examples, algorithms, and documentation - The examples directory no longer exists. - Instead, documentation has been incorporated directly into the MATLAB help navigator. - Also, a new algorithms directory has been added with two ALS methods for CANDECOMP/PARAFAC and Tucker. $Id: RELEASE_NOTES.txt,v 1.15 2009/07/08 04:34:56 tgkolda Exp $