효율적인 Java 매트릭스 라이브러리

Efficient Java Matrix Library
효율적인 Java 매트릭스 라이브러리
원저작자피터 아벨레스
안정된 릴리스
2020년 11월 4일 0.40, 20개월 전(2020-11-04)
운영 체제크로스 플랫폼
유형도서관
면허증.Apache_라이센스
웹 사이트ejml.org

Efficient Java Matrix Library(EJML)는 실수/복소수/밀도/소수 행렬을 조작하기 위한 선형 대수 라이브러리입니다.설계 목표는 1) 소규모 매트릭스 및 대규모 매트릭스 모두에 대해 가능한 한 계산 및 메모리 효율화, 2) 초보자 및 전문가 모두에게 접근하기 위한 것입니다.이러한 목표는 런타임, 클린 API 및 여러 인터페이스에서 사용하는 최적의 알고리즘을 동적으로 선택함으로써 달성됩니다.EJML은 무료이며 100% Java로 작성되었으며 Apache v2.0 라이센스로 출시되었습니다.

EJML에는 1) 절차적, 2) SimpleMatrix 및 3) 방정식의 세 가지 뚜렷한 상호작용 방법이 있습니다.절차 스타일은 EJML의 모든 기능을 제공하며 매트릭스 작성, 속도 및 특정 알고리즘을 거의 완벽하게 제어합니다.SimpleMatrix 스타일은 JAMA에서 영감을 받아 사용하기 쉬운 흐름 스타일의 객체 지향 API에서 핵심 기능의 단순화된 서브셋을 제공합니다.방정식 스타일은 Matlab 및 기타 CAS와 유사한 심볼 인터페이스를 제공하여 방정식을 콤팩트하게 작성합니다.[1]

기능

EJML은 고밀도 매트릭스에 다음과 같은 기능을 제공합니다.

  • 기본 연산자(더하기, 곱하기 등)
  • 매트릭스 조작(추출, 삽입, 결합 등)
  • 선형 솔버(선형, 최소 제곱, 증분 등)
  • 분해(LU, QR, 콜레스키, SVD, 고유값 등)
  • 매트릭스 기능(랭크, 대칭, 정의성 등)
  • 랜덤 행렬(공분산, 직교, 대칭 등)
  • 다른 내부 형식(줄자, 블록)
  • 유닛 테스트

사용 예

방정식 스타일

Kalman 이득 계산:

이큐.과정("K = P*H'*inv( H*P*H' + R )"); 

절차 스타일

Kalman 이득 계산:

멀티(H,P,c); 멀티트랜스B(c,H,S); addEquals(추가 등가)(S,R); 한다면( !뒤집다(S,S_inv) )     던지다 신규 Runtime Exception(예외)("반전 실패"); 멀티트랜스a(H,S_inv,d); 멀티(P,d,K); 

Simple Matrix 스타일

특이치 분해(SVD)의 예:

심플 SD s = 매트.svd(); 심플 매트릭스 U = s.취득하다(); 심플 매트릭스 W = s.취득하다(); 심플 매트릭스 V = s.V를 취득하다(); 

행렬 곱셈 예제:

심플 매트릭스 결과 = 매트.멀티(매트 B); 

분해 공장

Decomposition Factory를 사용하여 Density Double Row Major Matrix(DDRM)[2]를 사용하여 특이값 분해 계산:

Singular Value Decomposition_F64< >Dense Matrix64f> svd =      분해 공장_DDRM.svd(진실의, 진실의, 진실의);  한다면 (!분해 공장.분해 안전(svd, 매트))     던지다 신규 감지된예외.("분해 실패");  Dense Matrix64f U = svd.취득하다(무효, 거짓의); Dense Matrix64f S = svd.취득하다(무효); Dense Matrix64f V = svd.V를 취득하다(무효, 거짓의); 

행렬 곱셈 예제:

Common Ops_DDRM.멀티(매트, 매트 B, 결과); 

「 」를 참조해 주세요.

레퍼런스

  1. ^ "EJML Project Page". EJML. Peter Abeles. Retrieved Jan 21, 2019.
  2. ^ "Matrix Decompositions - Efficient Java Matrix Library". ejml.org. Retrieved 2021-04-24.

외부 링크