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 を提供し、複数のインターフェースを提供することで、これらの目標を達成します。
3 つの使用方法
- Operations(手続き型) — 最下位レベルで、メモリ、速度、特定のアルゴリズムをほぼ完全に制御できます。手続き型 API(行列に対する関数呼び出し)を使用します。
- SimpleMatrix — Jama に触発された、簡素化された使いやすいオブジェクト指向 API で、フロースタイルのインターフェースを備えています。
- Equations — Matlab に似たシンボリックインターフェース。コンパクトな方程式文字列を書くことができます。
これら 3 つはすべて同じ数学を実行できます(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、これが疎アルゴリズムの種となりました)に感謝します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト