Hi Laura, Marcus, for small processors (e.g. the beaglebone, used for KiwiSDR GPS position solutions) I have adapted an old library originally developed by NIST, https://github.com/hcab14/TNT_JAMA
Best regards Christoph On Thu, Jan 16, 2020 at 10:32 PM Müller, Marcus (CEL) <muel...@kit.edu> wrote: > > So, that depends a bit on what you want to do: > > These operations are classically implemented in a library called > LAPACK, which is really mature (and, it's written in Fortran90). You > use it through C++ wrappers like "IT++" or "Armadillo". > > Be a bit careful though. The usual way of defining the pseudoinverse of > a martrix with lin. indep. columns is > > A⁺ = (A* A)⁻¹ A* > > (with * being hermitian transposition). > > One of the relatively eternal laws of numerical math seems to be > > "you DON'T want to calculate that matrix inverse; it's way more work > than finding the solution to a system of linear equations directly (and > potentially much worse in terms of accuracy[2, (1.2) on p.2])" > > even for relatively small (A'A). Therefore, other methods exist, which > tend to be faster, and can, under some assumptions, be more stable[1]; > one is based on the singular value decomposition > > A = U𝛴V* > > TL;DR: LAPACK wrapped for your language of choice, e.g. IT++ has > eigenvalue, and singular value decompositions. You should find the > Pseudoinverse through the singular value decomposition. > > Best regards, > Marcus > > [1]https://www.johndcook.com/blog/2018/05/05/svd/ > [2] S. Rump: "Inversion of Extremely Ill-Conditioned Matrices > in Floating-Point" http://www.ti3.tuhh.de/paper/rump/Ru08a.pdf > > On Thu, 2020-01-16 at 20:57 -0800, Laura Arjona wrote: > > Hi all, > > > > Is there any library to use in gnuradio for algebra operations, such as > > matrix eigenvalues, and pseudoinverse? Or I'd need to code them myself in > > C++? > > > > I need to integrate those operations into my OOT C++ blocks. > > > > Thanks for your time > > > > Best > >