WikiDer > Эффективная матричная библиотека Java
Оригинальный автор (ы) | Питер Абелес |
---|---|
Стабильный выпуск | 0.39 / 6 апреля 2020 г. |
Операционная система | Кроссплатформенность |
Тип | Библиотека |
Лицензия | Apache_License |
Интернет сайт | ejml |
Эффективная матричная библиотека Java (EJML) - это библиотека линейной алгебры для управления вещественными / сложными / плотными / разреженными матрицами. Его цели дизайна: 1) быть максимально эффективными с точки зрения вычислений и памяти как для малых, так и для больших матриц и 2) быть доступными как для новичков, так и для экспертов. Эти цели достигаются путем динамического выбора лучших алгоритмов для использования во время выполнения, чистого API и нескольких интерфейсов. EJML является бесплатным, написан на 100% Java и выпущен под лицензией Apache v2.0.
EJML имеет три различных способа взаимодействия с ним: 1) процедурный, 2) SimpleMatrix и 3) уравнения. Процедура предоставляет все возможности EJML и почти полный контроль над созданием памяти, скоростью и конкретными алгоритмами. SimpleMatrix предоставляет упрощенное подмножество основных возможностей в простом в использовании объектно-ориентированном API в стиле потока, вдохновленном Джамой. Equations - это символьный интерфейс, похожий по духу на Matlab и другие CAS, который обеспечивает компактный способ написания уравнений. [1]
Возможности
EJML предоставляет следующие возможности для плотных матриц.
- Основные операторы (сложение, умножение, ...)
- Управление матрицей (извлечение, вставка, объединение, ...)
- Линейные решатели (линейные, наименьшие квадраты, инкрементальные, ...)
- Разложения (LU, QR, Холецкий, SVD, собственное значение, ...)
- Матричные характеристики (ранг, симметричность, окончательность, ...)
- Случайные матрицы (ковариационные, ортогональные, симметричные, ...)
- Различные внутренние форматы (строчный, блочный)
- Модульное тестирование
Пример использования (уравнения)
Вычисление коэффициента Калмана:
экв.процесс(«K = P * H '* inv (H * P * H' + R)»);
Пример использования (SimpleMatrix)
Пример разложения по сингулярным значениям (SVD):
SimpleSVD s = matA.svd();SimpleMatrix U = s.getU();SimpleMatrix W = s.GetW();SimpleMatrix V = s.getV();
Пример умножения матриц:
SimpleMatrix результат = matA.мульт(matB);
Пример использования (DenseMatrix64F)
Пример разложения по сингулярным значениям (SVD):
SingularValueDecomposition_F64<DenseMatrix64F> svd = DecompositionFactory_DDRM.svd(истинный, истинный, истинный);если (!РазложениеФабрика.разложить(svd, matA)) бросать новый DetectedException(«Разложение не удалось».);DenseMatrix64F U = svd.getU(ноль, ложный);DenseMatrix64F S = svd.GetW(ноль);DenseMatrix64F V = svd.getV(ноль, ложный);
Пример умножения матриц:
CommonOps_DDRM.мульт(matA, matB, результат);
Смотрите также
Рекомендации
- ^ «Страница проекта EJML». EJML. Питер Абелес. Получено 21 янв, 2019.