About This File
The Eigen4AutoIt environment (thread is here:
online Help is here) allows you to do matrix I/O (memory & files), matrix arithmetic, transformation, and decomposition, solve systems of linear equations, and perform advanced statistics, all at either single or double precision. Most functions can act on real or complex matrices (or the latter's real/imaginary parts separately). Much of the actual complexity of using Eigen in its native C++ environment has been hidden for AutoIt users, through extensive bounds and error checks, an intuitive function-naming convention, a large help file, and detailed tutorials and test examples.
This library allows you to perform fast matrix operations on large numerical data sets, using special matrix variables and simple AutoIt wrapper functions. These wrappers call C++ wrappers in the dlls (also written by RTFC, source included). The dlls in turn re-map AutoIt memory and call one or more Eigen functions. All operations are memory pointer-based and act directly on the matrices created in your AutoIt script, obviating the need for data transfers. Both 32-bit and 64-bit environments are supported; in x64, matrices can be any size that fits into virtual memory.
What's New in Version 4.2
- Added: _Eigen_LDA now supports up to 32 classes if submitted in a single input matrix (with class IDs in a specified column of matrix A or in the first column of matrix P). The maximum number of multiple data sets remains 8 training sets and up to 8 testing sets.
- Added: _Eigen_LDA dll function now produces diagnostics to console if $EIGEN_VERBOSE is set (see _Eigen_SetVerbose).
- Added: _Eigen_Translate/_Col_inPlace/_InPlace/_Row_InPlace, to replace all occurrences of specific values using a lookup table, with test script.
- Added: _Eigen_ReplaceMatrixValue, updating and returning original matrix cell content in a single call.
- Added: _Eigen_IncrementMatrixValue, _Eigen_DecrementMatrixValue, _Eigen_AddMatrixValue, _Eigen_SubMatrixValue, _Eigen_MultMatrixValue, and _Eigen_DivMatrixValue, for single matrix cell management.
- Added: transposed block-copy functions _Eigen_Copy_ABlock_ToAblock_Transposed and _Eigen_Copy_ABlock_ToBblock_Transposed.
- Added: _Eigen_Copy_Avector_ToAvector and _Eigen_Copy_Avector_ToBvector, with optional user-defined offsets.
- Added: _Eigen_Copy_AStrictlyUpper_ToAStrictlyLower and _Eigen_Copy_AStrictlyLower_ToAStrictlyUpper for square matrices.
- Added: _Eigen_ConditMask_Col/_InPlace and _Eigen_ConditMask_Row/_InPlace, returning a masking column- c.q. row vector.
- Added: more checks for invalid intermediate results (in dll) in _Eigen_LDA.
- Added: parts of the free Spectra Eigensolver template library (itself based upon Eigen), incorporated into new functions _Eigen_Spectra_GenEigsSolver and _Eigen_Spectra_SymEigsSolver; these allow a user-defined number of the largest or smallest eigenvalues (and associated eigenvectors) to be computed, enabling larger data sets and faster convergence.
- Added: option $useSpectra in _Eigen_LDA (default: False) to use Spectra calls, enabling larger data sets and faster convergence.
- Added: path existence checks in matrix file I/O functions.
- Added: error messages in _Eigen_Show_MatrixProfile.
- Added: internal function _Eigen_ResetFlag.
- Changed: _Eigen_LDA output matrices I and Z have been extended with a second column to store mismatch counts per class.
- Changed: when E4A error messages are enabled, they are now written out to console as well.
- Changed: whenever the number of released matrices exceeds new Global $EIGEN_MAXBLANKS (default: 1,000), the empty array tail is clipped.
- Changed: the order of optional parameters in _Eigen_Gauss_Pvalue and _Eigen_Gauss_ZtoPvalue. This is a script-breaking change.
- Changed: internal functionality of _Eigen_Normalise*, see description in Help file. This is a script-breaking change.
- Fixed: various bugs in some edge cases of _Eigen_LDA.
- Fixed: _Eigen_Sort/_InPlace did not parse the $ascending flag to the dll function.
- Fixed: internal function _Eigen_Selection_ToTable did not declare internal counter $cc locally.
- Fixed: internal function _Eigen_BitClear did not work properly.
- Fixed: several Normalise functions had incorrect bounds checks.
- Fixed: various typos and examples in Help document.