Armadillo C++: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Armadillo für C++: Die ultimative Anleitung für Matrix-Berechnungen

1. Was ist Armadillo und warum brauchst du es?

Armadillo ist eine leistungsstarke C++-Bibliothek für lineare Algebra. Sie bietet eine intuitive und benutzerfreundliche Schnittstelle für Matrizen, Vektoren und Cubes (3D-Arrays). Das Besondere: Armadillo vereint die Geschwindigkeit von Low-Level-Bibliotheken wie LAPACK und BLAS mit der Einfachheit von Hochsprachen wie MATLAB oder Python (NumPy).

Warum ist das wichtig? Wenn du Anwendungen in den Bereichen Machine Learning, Computer Vision, Signalverarbeitung, Robotik, physikalische Simulation oder anderen Feldern entwickelst, die intensive Matrix-Berechnungen erfordern, ist Armadillo dein unverzichtbares Werkzeug. Du schreibst sauberen, lesbaren Code, der dank automatischer Optimierung und Hardware-Beschleunigung (über OpenBLAS, Intel MKL oder Apple Accelerate) extrem schnell läuft.

Im Gegensatz zu manuellen Schleifen über Array-Elemente bietet Armadillo High-Level-Operationen: Matrix-Multiplikation, Lösen linearer Gleichungssysteme, Eigenwertberechnung, Singulärwertzerlegung (SVD) und vieles mehr. Die Bibliothek wird sowohl in der Forschung als auch in der Industrie intensiv genutzt. Ihr API ist MATLAB so ähnlich, dass Code oft fast 1:1 übertragen werden kann.

2. Installation

Armadillo ist eine C++-Bibliothek und wird nicht über pip oder npm installiert. Stattdessen installierst du sie als Systembibliothek oder bindest sie über einen C++-Paketmanager (z. B. vcpkg, Conan) oder manuell in dein Projekt ein.

Empfohlene Methode (Linux/macOS):

# Ubuntu / Debian
sudo apt-get install libarmadillo-dev

# macOS (via Homebrew)
brew install armadillo

# Fedora / RHEL
sudo dnf install armadillo-devel

Installation mit vcpkg (Windows, Linux, macOS):

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh  # oder bootstrap-vcpkg.bat unter Windows
./vcpkg install armadillo

Kompilieren mit Armadillo (g++/clang): Nach der Installation linkst du die Bibliothek:

g++ -std=c++11 -O2 mein_programm.cpp -larmadillo -o mein_programm

Für maximale Leistung empfiehlt es sich, auch ein optimiertes BLAS-Backend (z. B. OpenBLAS oder Intel MKL) zu installieren. Armadillo findet es automatisch, wenn es vorhanden ist.

3. Schnellstart

Ein minimales, funktionsfähiges Beispiel, das die Erstellung von Matrizen und grundlegende Operationen zeigt:

#include <iostream>
#include <armadillo>

using namespace arma;

int main() {
    // Erstelle eine 3x3-Matrix, gefüllt mit Einsen
    mat A = ones<mat>(3, 3);
    std::cout << "Matrix A:\n" << A << std::endl;

    // Erstelle einen Spaltenvektor
    vec b = {1, 2, 3};
    std::cout << "Vektor b:\n" << b << std::endl;

    // Löse das lineare Gleichungssystem A * x = b
    vec x = solve(A, b);
    std::cout << "Lösung x:\n" << x << std::endl;

    // Überprüfung: A * x sollte gleich b sein
    std::cout << "Prüfung A * x:\n" << A * x << std::endl;

    return 0;
}

Ausgabe: Das Programm erstellt eine Einsermatrix (alle Elemente sind 1), löst das System und gibt das Ergebnis aus.

4. Wichtige Methoden und Klassen

Armadillo bietet drei Hauptklassen: mat (Matrix aus double), vec (Vektor aus double) und cube (3D-Würfel aus double). Hier sind die wichtigsten Methoden im Überblick:

  • Erstellung: zeros<mat>(4,5), randu<mat>(3,3), eye<mat>(4,4)
  • Zugriff: A(1,2), A.row(0), A.col(1), A.submat(0,0,2,1)
  • Arithmetik: A + B, A * B, A % B (elementweise), A.t() (Transponierte)
  • Lineare Algebra: solve(A,b), inv(A), det(A), eig_sym(A), svd(A)
  • Statistik: mean(A), stddev(A), min(A), max(A)

Empfehlungen