Effektivt Java Matrix Library
Originalförfattare | Peter Abeles |
---|---|
Stabil frisättning | 0.41.1 / 4 december 2022
|
Operativ system | Cross-plattform |
Typ | Bibliotek |
Licens | Apache-licens |
Hemsida |
Efficient Java Matrix Library (EJML) är ett linjärt algebrabibliotek för att manipulera verkliga/komplexa/täta/glesa matriser. Dess designmål är; 1) att vara så beräknings- och minneseffektiv som möjligt för både små och stora matriser, och 2) att vara tillgänglig för både nybörjare och experter. Dessa mål uppnås genom att dynamiskt välja de bästa algoritmerna att använda vid körning, rent API och flera gränssnitt. EJML är gratis, skrivet i 100 % Java och har släppts under en Apache v2.0-licens.
EJML har tre distinkta sätt att interagera med det: 1) Procedurmässigt, 2) SimpleMatrix och 3) Ekvationer. Procedurstilen ger alla funktioner i EJML och nästan fullständig kontroll över matrisskapande, hastighet och specifika algoritmer. SimpleMatrix-stilen ger en förenklad delmängd av kärnfunktionerna i ett lättanvänt flödesformat objektorienterat API, inspirerat av JAMA . Equations-stilen ger ett symboliskt gränssnitt, liknande till Matlab och andra CAS, som ger ett kompakt sätt att skriva ekvationer.
Förmågor
EJML tillhandahåller följande funktioner för täta matriser.
- Grundläggande operatorer (addition, multiplikation, ...)
- Matrix Manipulation (extrahera, infoga, kombinera, ...)
- Linjära lösare (linjära, minsta kvadrater, inkrementella, ...)
- Nedbrytningar (LU, QR, Cholesky, SVD, Egenvärde, ...)
- Matrisfunktioner (rank, symmetrisk, definitivhet, ...)
- Slumpmässiga matriser (kovarians, ortogonal, symmetrisk, ...)
- Olika interna format (rad-dur, block)
- Enhetstestning
Användningsexempel
Ekvationsstil
Beräkna Kalman-förstärkningen :
ekv . process ( "K = P*H'*inv(H*P*H' + R)") ;
Procedurstil
Beräkna Kalman vinst:
mult ( H , P , c ); multTransB ( c , H , S ); addEquals ( S , R ); if ( ! invert ( S , S_inv )) kasta nytt RuntimeException ( "Invert misslyckades") ; multTransA ( H , S_inv , d ); mult ( P , d , K );
SimpleMatrix-stil
Exempel på singular värdenedbrytning (SVD):
SimpleSVD s = matA . svd (); SimpleMatrix U = s . getU (); SimpleMatrix W = s . getW (); SimpleMatrix V = s . getV ();
Exempel på matrismultiplikation:
SimpleMatrix- resultat = matA . mult ( matB );
DecompositionFactory
Användning av en DecompositionFactory för att beräkna en Singular Value Decomposition med en Dense Double Row Major-matris (DDRM):
SingularValueDecomposition_F64 < DenseMatrix64F > svd = DecompositionFactory_DDRM . svd ( sant , sant , sant ); if ( ! DecompositionFactory . decomposeSafe ( svd , matA )) kasta nytt DetectedException ( "Dekomposition misslyckades." ); DenseMatrix64F U = svd . getU ( noll , falskt ); DenseMatrix64F S = svd . getW ( noll ); DenseMatrix64F V = svd . getV ( noll , falskt );
Exempel på matrismultiplikation:
CommonOps_DDRM . mult ( matA , matB , resultat );