armadillo

Высокопроизводительная библиотека линейной алгебры и научных вычислений на C++, предназначенная для создания эффективного и удобочитаемого кода. Библиотека предоставляет интуитивно понятный синтаксис, близкий к MATLAB/Octave, и автоматически оптимизирует выражения на этапе компиляции с использованием шаблонного метапрограммирования. Armadillo широко применяется в машинном обучении, компьютерном зрении, обработке сигналов и других областях, требующих интенсивных матричных вычислений.

Особенности

  • интуитивно понятный синтаксис, похожий на MATLAB, для быстрого прототипирования непосредственно на C++;
  • эффективные классы для работы с плотными и разреженными матрицами, векторами и кубами;
  • автоматическая оптимизация выражений через отложенные вычисления (lazy evaluation) с использованием шаблонного метапрограммирования;
  • интеграция с высокопроизводительными библиотеками BLAS и LAPACK (OpenBLAS, Intel MKL, Apple Accelerate);
  • поддержка OpenMP для автоматического распараллеливания вычислительно интенсивных операций;
  • широкий набор функций: разложения матриц (SVD, QR, eigen), решатели СЛАУ, генераторы случайных чисел, статистика.

Основные компоненты

Библиотека состоит из нескольких модульных классов и функций, охватывающих все аспекты линейной алгебры и работы с матрицами (подробнее с документацией можно ознакомиться здесь).

Классы для работы с матрицами и векторами

Armadillo предоставляет гибкие классы для представления плотных и разреженных массивов данных. Основные классы шаблонизированы по типу элементов (float, double, complex и др.).

Основные классы:

  • Mat, mat, cx_mat — плотная матрица произвольного размера;
  • Col, colvec, vec — плотный вектор-столбец;
  • Row, rowvec — плотный вектор-строка;
  • Cube, cube, cx_cube — плотный трёхмерный массив (куб);
  • SpMat, sp_mat, sp_cx_mat — разреженная матрица.

Базовые операции и методы доступа

Классы предоставляют удобные методы для доступа к данным, изменения размеров и базовых преобразований.

Основные методы:

  • .n_rows, .n_cols, .n_elem, .n_slices — получение размеров объекта;
  • (), [], .at() — доступ к элементам с проверкой границ и без;
  • .zeros(), .ones(), .eye(), .randu(), .randn() — инициализация специальными значениями;
  • .fill(value) — заполнение всех элементов заданным значением;
  • .set_size() — изменение размера без сохранения данных;
  • .reshape(), .resize() — изменение размера с сохранением данных;
  • .submat(), .rows(), .cols() — выделение подматриц;
  • .diag() — доступ к диагонали матрицы;
  • .t(), .st() — транспонирование матрицы;
  • .i() — обращение квадратной матрицы;
  • .min(), .max() — поиск минимального и максимального элемента;
  • .is_finite(), .has_inf(), .has_nan() — проверка на корректность данных.

Сгенерированные матрицы и векторы

Библиотека включает удобные функции для создания специальных матриц и векторов.

Основные функции:

  • eye(n, m) — единичная матрица;
  • ones(n, m), zeros(n, m) — матрица из единиц или нулей;
  • randu(n, m), randn(n, m) — случайные числа (равномерное или нормальное распределение);
  • linspace(a, b, n) — вектор с линейно распределёнными элементами;
  • logspace(a, b, n) — вектор с логарифмически распределёнными элементами;
  • toeplitz() — теплицева матрица.

Матричные и векторные функции

Armadillo предоставляет более 200 функций для обработки матриц и векторов, включая редукции, преобразования и статистику.

Основные функции:

  • accu(X) — сумма всех элементов;
  • sum(X), prod(X) — сумма или произведение по строкам/столбцам;
  • cumsum(X), cumprod(X) — кумулятивная сумма или произведение;
  • min(X), max(X) — минимум или максимум по строкам/столбцам;
  • mean(X), median(X), stddev(X) — статистические характеристики;
  • dot(a, b), cross(a, b) — скалярное и векторное произведение;
  • norm(X, p) — p-норма вектора или матрицы;
  • sort(X), sort_index(X) — сортировка и получение индексов сортировки;
  • unique(X) — уникальные элементы;
  • vectorise(X) — преобразование матрицы в вектор.

Матричные разложения и решатели

Библиотека интегрируется с LAPACK для предоставления полного спектра матричных разложений и решения систем линейных уравнений.

Основные функции:

  • chol(X) — разложение Холецкого;
  • eig_sym(X) — собственные значения и векторы симметричной матрицы;
  • eig_gen(X) — собственные значения и векторы общей квадратной матрицы;
  • lu(X) — LU-разложение;
  • qr(X), qr_econ(X) — QR-разложение (полное или экономичное);
  • svd(X), svd_econ(X) — сингулярное разложение (полное или экономичное);
  • solve(A, b) — решение системы линейных уравнений (Ax = b);
  • inv(X), pinv(X) — обратная и псевдообратная матрица;
  • rank(X) — ранг матрицы.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "armadillo/12.6.4@aurora",
    )    

Процесс локальной сборки описан в документации.

armadillo

Armadillo is a high quality C++ library for linear algebra and scientific computing, aiming towards a good balance between speed and ease of use.
Лицензия
Apache-2.0
Версия
Автор
Daniil Markevich <d.markevich@omp.ru>
Домашняя страница
Скачать
armv8
613.97 Kb
MD5: 9104ad8619d30e82282e67cd98cbd180
Updated: 13.11.2025, 13:12:43
x86_64
614.9 Kb
MD5: 53998796518fa789c4682a1aac99b714
Updated: 13.11.2025, 13:12:56
armv7
610.85 Kb
MD5: 47c994d588c242341f766a62ec42270c
Updated: 24.02.2026, 12:28:59
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.