효율적인 Java 매트릭스 라이브러리
Efficient Java Matrix Library| 원저작자 | 피터 아벨레스 |
|---|---|
| 안정된 릴리스 | 2020년 11월 4일 0.40, 전( |
| 운영 체제 | 크로스 플랫폼 |
| 유형 | 도서관 |
| 면허증. | Apache_라이센스 |
| 웹 사이트 | ejml |
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, 결과); 「 」를 참조해 주세요.
레퍼런스
- ^ "EJML Project Page". EJML. Peter Abeles. Retrieved Jan 21, 2019.
- ^ "Matrix Decompositions - Efficient Java Matrix Library". ejml.org. Retrieved 2021-04-24.