delphi matrix library

Bugfix update and a new Non Linear Fitting class

There has been problems in:
ASMMatrixelementWiseMultOperations.pas - an assert popped up although everything was fine.
ASMMatrixNormOperationsx64.pas
ASMMatrixNormOperations.pas Fixed problems with larger matrices. Some elements were wrongly scaled.

New Features:
Matrix.pas - A new cloning function was introduced.
NonLinearFit.pas - A non linear fitting class based on the "Levenberg-Marquardt" algorithm. The algorithm is basically a gradient decent alg. wheras the gradient is estimated by the data points itself - a calculated gradient function is missing.

New Features for the Delphi Matrix Library

There is a new update available for the matrix library. I'm proud to announce that there is a new class for Principal Component Analysis available featuring even a fast robust implementation when mapping e.g. an image into the PCA feature space. This algorithm checks for outlying pixels (e.g occlusion) which can completely disrupt the result when mapping into the feature space. Note that this algorithm can handle up to 40 to 50% of occluded regions and is still fast. The test project was updated and shows the handling of images and matrices.
Another step forward is the implementation of current BLAS3 algorithm in the matrix multiplication algorithm, basically implementing the Strassen multiplication algorithm. This algorithm can be faster that a conventional algorithm in most cases - up to 20% on large multiplication cases - but can also suffer of round off errors in cases of badly scaled matrices. The library thus allows you the to choose between a conventional or fast multiplication.

New Delphi Matrix Library

This library contains numerous assembler hand optimized base matrix functions as well as many higher order functions like singular value decomposition, matrix inversion, pseudo inversion, LU decomposition and many others. Note the even x64 assembler code is available to grant maximum compatibility. To install the downloaded package simply compile the attached package  and add the folder to the  library path. You can find a few examples on how to use the matrix class (or the plain functions) in the test project.
I'm open for ideas to enhance this library as much as possible so feel free to contact me.

The library is released under the Apache license meaning that it may also be integrated into commercial products.

If you think that the software is useful and want to support the development then feel free to  make a donation.

Update: The matrix class  had a bug in some of the 64bit pointer arithmetic code. This has been fixed.

downloads

donate