lessthanoptimal/ejml
A fast and easy to use linear algebra library written in Java for dense, sparse, real, and complex matrices.
EJML: 효율적인 Java 행렬 라이브러리
무엇인가
Java용 선형 대수 라이브러리 — 행렬을 다루는 수학 도구 — 100% Java로 작성되었으며 Apache v2.0 라이선스로 무료로 배포됩니다. 실수, 복소수, 밀집, 희소 행렬을 처리합니다.
설계 목표
- 효율성: 작은 행렬과 큰 행렬 모두에 대해 가능한 한 계산 및 메모리 효율적으로.
- 접근성: 초보자와 전문가 모두 사용할 수 있습니다.
- 런타임에 최상의 알고리즘을 선택하고, 깔끔한 API를 제공하며, 여러 인터페이스를 제공함으로써 이러한 목표를 달성합니다.
세 가지 사용 방법
- Operations (절차적) — 최하위 수준으로, 메모리, 속도 및 특정 알고리즘을 거의 완전히 제어할 수 있습니다. 절차적 API(행렬에 대한 함수 호출)를 사용합니다.
- SimpleMatrix — Jama에서 영감을 받은 단순화되고 사용하기 쉬운 객체 지향 API로, 흐름 스타일 인터페이스를 제공합니다.
- Equations — Matlab과 유사한 기호 인터페이스로, 간결한 방정식 문자열을 작성할 수 있습니다.
세 가지 모두 동일한 수학을 수행할 수 있습니다(README에 각 스타일의 칼만 이득 예제가 나와 있습니다).
주요 기능
- 기본 연산자 — 덧셈, 곱셈 등
- 행렬 조작 — 추출, 삽입, 결합 등
- 선형 솔버 — 선형, 최소 제곱, 증분
- 분해 — LU, QR, Cholesky, SVD, 고유값 등
- 행렬 특성 — 랭크, 대칭성, 정부호성 등
- 무작위 행렬 생성 — 공분산, 직교, 대칭
- 다양한 내부 형식 — 행 우선, 블록, 희소
- Graph BLAS (세미링)
- 단일 스레드 및 동시 구현
- Kotlin 확장
- 모든 알고리즘에 대한 단위 테스트
품질 및 성능
- 정확성을 보장하기 위해 광범위하게 단위 테스트됨
- 내부적으로 그리고 Java Matrix Benchmark와 비교하여 벤치마킹됨
- 문서는 ejml.org(매뉴얼, JavaDoc)에서 제공
패키지 및 모듈
Maven Central에서 org.ejml:ejml-all:0.46.0으로 사용 가능(또는 개별 모듈을 가져올 수 있음):
| 모듈 | 용도 |
|---|---|
ejml-core |
핵심 데이터 구조 및 공통 코드 |
ejml-fdense |
밀집 실수 32비트 부동 소수점 알고리즘 |
ejml-ddense |
밀집 실수 64비트 부동 소수점 알고리즘 |
ejml-cdense |
밀집 복소수 32비트 부동 소수점 알고리즘 |
ejml-zdense |
밀집 복소수 64비트 부동 소수점 알고리즘 |
ejml-fsparse |
희소 실수 32비트 부동 소수점 알고리즘 |
ejml-dsparse |
희소 실수 64비트 부동 소수점 알고리즘 |
ejml-simple |
SimpleMatrix 및 Equations 인터페이스 |
ejml-java9module |
Java 모듈 시스템(JPMS)용 단일 통합 jar |
Java 모듈 시스템 참고: 여러 ejml-* 모듈을 동시에 모듈 경로에 두지 마십시오. 패키지 분할 오류가 발생합니다. 대신 ejml-java9module jar를 사용하십시오.
행렬 유형 명명 규칙
행렬 클래스 이름은 DMatrixRMaj와 같은 패턴을 따릅니다:
- 첫 번째 문자 = 데이터 유형:
D(실수 double),F(실수 float),Z(복소수 double),C(복소수 float),B(이진) - 중간 = 구조:
RMaj(밀집 행 우선),RBlock(블록),NxN/N(고정 크기),CSC(압축 희소 열),Triplet
예: DMatrixRMaj = double, 실수, 밀집, 행 우선 행렬.
소스에서 빌드
- Gradle로 빌드됩니다. **Java 17+**가 필요하지만 Java 11 바이트코드를 생성합니다.
- 명령:
./gradlew autogenerate그 다음./gradlew publishToMavenLocal. - 기타 명령:
createLibraryDirectory(모든 모듈 jar를ejml/libraries에 저장) 및oneJar(모든 것을 단일EJML.jar로 컴파일). - 사전 빌드된 jar는 Maven Central에서 사용할 수 있습니다. 대부분의 사용자는 빌드할 필요가 없습니다.
저장소 구조
docs/— 문서 (오래되었을 수 있음; 온라인이 최신)examples/— 사용 예제main/— 라이브러리 소스 코드change.txt— 버전 기록
커뮤니티 및 지원
- Google 그룹: efficient-java-matrix-library-discuss
- 이슈 트래커: GitHub issues (github.com/lessthanoptimal/ejml/issues)
- 크레딧: 저자는 David Watkins(『행렬 계산의 기초』)와 Timothy A. Davis(『희소 선형 시스템의 직접 방법』 및 CSparse, 이는 희소 알고리즘의 시드가 되었습니다)에게 감사합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트