Effektivt Java Matrix Library

Effektivt Java Matrix Library
Originalförfattare Peter Abeles
Stabil frisättning
0.41.1 / 4 december 2022 ; 2 månader sedan ( 2022-12-04 )
Operativ system Cross-plattform
Typ Bibliotek
Licens Apache-licens
Hemsida ejml .org

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  ); 

Se även

externa länkar