MATLAB Coder

Generierung von C und C++ Code aus MATLAB-Code

 

MATLAB Coder™ generiert aus MATLAB®-Code C und C++ Code für eine Reihe unterschiedlicher Hardwareplattformen, von Desktop-Systemen bis hin zu Embedded-Hardware. Er unterstützt einen Großteil der MATLAB-Sprache und eine große Auswahl von Toolboxen. Sie können den generierten Code als Quellcode, statische Bibliotheken oder dynamische Bibliotheken in Ihre Projekte integrieren. Der generierte Code ist lesbar und plattformunabhängig. Sie können ihn mit zentralen Teilen Ihres bestehenden C und C++ Codes und Bibliotheken kombinieren. Sie können den generierten Code auch als MEX-Funktion zur Verwendung in MATLAB paketieren.

Beim Einsatz mit Embedded Coder® bietet MATLAB Coder Code-Anpassungen, zielspezifische Optimierungen, Code-Rückverfolgbarkeit sowie Verifikation mit Software-in-the-Loop- (SIL) und Processor-in-the-Loop-(PIL).

Um MATLAB-Programme als eigenständige Anwendungen bereitzustellen, verwenden Sie den MATLAB Compiler™. Um Softwarekomponenten für die Integration mit anderen Programmiersprachen zu erstellen, verwenden Sie den MATLAB Compiler SDK™.

Erste Schritte:

Ausführung in jeder Umgebung

Generieren Sie lesbaren und übertragbaren ANSI C/C++ Quellcode. Stellen Sie Code lizenzgebührenfrei bereit.

Lizenzgebührenfreie Bereitstellung von Algorithmen

Verwenden Sie einen beliebigen C/C++ Compiler, um Ihren generierten Code zu kompilieren und auf jeder beliebigen Hardware auszuführen, von Desktop-Systemen über mobile Geräte bis hin zu Embedded-Hardware. Der generierte Code ist lizenzgebührenfrei – stellen Sie ihn in kommerziellen Anwendungen Ihren Kunden kostenlos zur Verfügung.

Generierter Code für Matrizen-Multiplikationen.

Delphi entwickelt einen Algorithmus zur Ausrichtung von Radarsensoren für aktive Sicherheitssysteme in Kraftfahrzeugen.

Unterstützte Toolboxen und Funktionen

MATLAB Coder generiert Code aus einer großen Auswahl von MATLAB-Funktionen, die von Entwicklungsingenieuren zum Entwickeln von Algorithmen als Komponenten größerer Systeme verwendet werden. Dazu gehören über 2500 Funktionen und Operatoren aus MATLAB und zugehörigen Toolboxen.

Unterstützung der MATLAB-Sprache und -Toolboxen für die Codegenerierung.

Bereitstellen von C++ Code aus MATLAB

Integrieren Sie den generierten Code mit objektorientiertem C++ Quellcode.

Generieren von C++ Code mit Namensräumen

MATLAB Coder kann C++ Code in einem Namensraum erzeugen, wodurch die Integration mit anderem Quellcode, der möglicherweise identische Funktions- oder Datentyp-Namen hat, leicht möglich ist. Der Code-Generator paketiert alle generierten Funktionen und Typdefinitionen in den Namensraum.

Generierter Code, der Variablen mit identischen Datentyp-Namen mit Hilfe von Namensräumen integriert.

Generieren von C++ Klassen aus MATLAB-Klassen

MATLAB Coder erzeugt C++ Klassen aus Klassen in Ihrem MATLAB-Code, einschließlich Wertklassen, Handle-Klassen und System Objects. Der generierte Code kann in C++ Bibliotheken oder ausführbare Dateien kompiliert und in Ihren bestehenden C++ Quellcode integriert werden.

Generierter C++ Code mit einer Klassenschnittstelle

Nutzung dynamisch zugewiesener C++ Arrays in erzeugten Funktionsschnittstellen

Generieren Sie C++ Code für MATLAB-Funktionen, die ein Array mit einer Array-Größe akzeptieren oder zurückgeben, welche zur Kompilierungszeit unbekannt ist oder deren Grenze einen vordefinierten Schwellenwert überschreitet. Im generierten Code wird der Speicher für das Array dynamisch zugewiesen und als eine Klassenvorlage namens coder::array implementiert. Zusätzlich zur ausnahmesicheren Speicherfreigabe bietet coder::array APIs für den Zugriff auf und die Verwaltung des dynamischen Arrays.

Dynamisch zugewiesene Arrays an generierte Funktionen übergeben

Bereitstellen von Deep-Learning-Netzen

Generieren von Code aus trainierten Deep Learning-Netzen

Bereitstellung von End-to-End-Algorithmen für Deep Learning

Bereitstellung einer Vielzahl trainierter Deep-Learning-Netze wie ResNet-50 und MobileNet-v2, sowie LSTM und anderer Ebenen von der Deep Learning Toolbox™ bis Intel® und ARM® Cortex® CPUs. Code für die Vor- und Nachverarbeitung kann dabei zusammen mit den trainierten Netzen erzeugt werden, um vollständige Algorithmen zu erhalten.

Generierung von optimiertem Code für Inferenz

Da der MATLAB Coder nur den Code generiert, der für die Ausführung der Inferenz mit Ihrem spezifischen Algorithmus benötigt wird, ist der Code schneller und verbraucht weniger Speicherplatz, als andere Lösungen für Deep Learning. Der generierte Code ruft optimierte Bibliotheken auf, einschließlich Intel MKL-DNN für Intel-Prozessoren und ARM Compute Library für ARM-Cortex-Prozessoren. Verwenden Sie den GPU Coder™, um Algorithmen durch die Generierung von CUDA®-Code, der auf jedem modernen NVIDIA®-Grafikprozessor läuft, zu beschleunigen oder bereitzustellen.

Erstellen von Prototypen auf Hardware

Mit der automatischen Konvertierung Ihres Algorithmus nach C/C++ erreichen Sie schnell das Hardwarestadium.

Erstellung von Prototypen auf Desktop- und Cloud-Plattformen

Verwenden Sie die MATLAB Coder-App oder entsprechende Befehlszeilen-Funktionen, um schnell Code für Ihre Signalverarbeitungs-, Computer-Vision-, Deep-Learning-, Regelungssystem- oder sonstige Anwendungen zu generieren und um den Code dann für Ihre Hardware zu kompilieren.

Schnelle Erstellung von Prototypen für Algorithmen auf Desktop- und Cloud-Plattformen.

Erstellung von Prototypen auf Embedded- und Mobil-Plattformen

Nutzen Sie jedes gewünschte Zielgerät, indem Sie den generierten Code manuell in Ihre Anwendung integrieren. Automatisieren Sie den Prozess für Raspberry Pi mit dem MATLAB Support Package für Raspberry Pi.

Schnelle Erstellung von Prototypen für Algorithmen auf Embedded- und Mobil-Plattformen.

Übergang vom Prototyp zur Produktion

Verwenden Sie den MATLAB Coder mit dem Embedded Coder, um Code zu generieren, der prozessorspezifische Instruktionen nutzt. Diese können schneller ausgeführt werden als standardmäßiger ANSI/ISO C oder C++ Code.

Laufzeitprofil des generierten eigenständigen Codes.

Integration in Software

Sie können MATLAB-Algorithmen als C/C++ Code in Ihrer Softwareumgebung wiederverwenden.

Generierung von Code mit einfachen, leicht zu integrierenden Schnittstellen

Der generierte Code verwendet C/C++ Typen auf natürliche Weise und vereinfacht so die Integration in externen Code. Sie können generierten Code als Quellcode oder in Form von Bibliotheken integrieren. Vertrauenswürdige C/C++ Bibliotheken oder ‑Komponenten können zum Testen mit höherer Genauigkeit in MATLAB eingebunden und automatisch auch aus dem generierten Code aufgerufen werden.

Interaktiver Rückverfolgbarkeitsbericht mithilfe von MATLAB Coder mit Embedded Coder.

Leistungsoptimierung für generierten Code

Nutzen Sie Optimierungen, um Kompromisse zwischen der Ausführungsgeschwindigkeit, der Arbeitsspeichernutzung, der Lesbarkeit und der Plattformunabhängigkeit anzupassen. Verwenden Sie Profiling-Tools, um Engpässe zu identifizieren. Um die Leistung weiter zu erhöhen, generieren Sie Mehrkern-OpenMP-Code und rufen optimierte Bibliotheken wie LAPACK, BLAS und FFTW auf, sofern verfügbar.

Beispiel für generierten Code mit Aufrufen von OpenMP.

Wiederverwenden von MATLAB-Tests für generierten Code vor der Integration

Sie können vorhandene MATLAB-Tests wiederverwenden, um das Verhalten von generiertem Code in der interaktiven MATLAB-Umgebung zu verifizieren. Mit dem MATLAB Unit Testing Framework können Sie schnell einen umfangreichen Satz an Regressionstests entwickeln, mit denen der generierte C-Code verifiziert werden kann.

Verifizieren des Verhaltens des generierten Codes, bevor Sie ihn in Ihre Anwendung integrieren.

Beschleunigen von Algorithmen

Generieren Sie C/C++ Code und kompilieren Sie ihn zur Verwendung innerhalb von MATLAB.

Beschleunigen von Algorithmen auf CPUs

Sie können generierten Code in Form von MEX-Funktionen von Ihrem MATLAB-Code aus aufrufen, um die Ausführung zu beschleunigen. Die Leistung hängt dabei jedoch von Ihrem MATLAB-Code ab. Sie können ein Profiling für generierte MEX-Funktionen durchführen, um Engpässe zu identifizieren und Ihre Optimierungsanstrengungen passend auszurichten.

Profiling von MEX-Funktionen zur Identifizierung von Leistungsengpässen.

Beschleunigung der Laufzeit von Algorithmen mit GPUs

Verwenden Sie die Parallel Computing Toolbox™, um die Ausführung von Algorithmen in MATLAB zu beschleunigen. Verwenden Sie den GPU Coder, um CUDA-Code zur Beschleunigung oder Bereitstellung zu generieren, der auf jeder modernen NVIDIA GPU läuft.

Neue Funktionen

C++ Code

Generieren von C++ Klassen aus MATLAB-Klassen

C++ Code

Nutzung dynamisch zugewiesener C++ Arrays in erzeugten Funktionsschnittstellen

Coder Type Editor

Interaktives Erstellen und Bearbeiten von Input-Typen

Schnellere FFT

Verbesserte Leistung des für schnelle Fourier-Transformationsfunktionen (FFT) generierten Codes

Datetime und Timetables

Erzeugen von Code für Datetime-Arrays und Timetables

Optimization Toolbox-Codegenerierung

Erzeugen von C Code für Probleme mit linearen Nebenbedingungen und quadratischen Zielfunktionen mit quadprog

LSTM-Netze (Long Short-Term Memory)

Generieren von Code für rekurrente Netze wie LSTM-Netze

Deep-Learning-Netze

Erzeugen von Code für DenseNet-201 und Xception

Details zu diesen Features und den zugehörigen Funktionen finden Sie in den Release Notes.

Panel Navigation

Die Vorteile der Generierung von C Code aus MATLAB

Tipps und Best Practices für die Arbeit mit MATLAB Coder sowie Anwendungsbeispiele erfolgreicher Codegenerierung bei Delphi, Baker Hughes, iSonea und dorsaVi.