Hauptmerkmale

MATLAB Coder-App (links) und Codegenerierungsbericht (rechts) mit generiertem C-Code.


Ausführung in jeder Umgebung

MATLAB Coder™ übersetzt Ihren MATLAB-Code in ANSI/ISO-C- und C++-Code, der effizient, lesbar und plattformunabhängig ist. Sie können jeden C-Compiler verwenden, um den generierten Code zu kompilieren und auf jeglicher Hardware auszuführen, von Desktop-Systemen über mobile Geräte bis hin zu eingebetteter Hardware. Der generierte Code ist lizenzgebührenfrei. Sie können ihn Ihren Kunden in gewerblichen Anwendungen bereitstellen, ohne entsprechende Gebühren zu bezahlen.

Mit der automatischen Codegenerierung können Sie beim Schreiben, Debuggen und Pflegen von maschinennahem C-Code Zeit sparen. Verbringen Sie mehr Zeit damit, Ihre Ideen in MATLAB zu entwickeln. Während Sie Ihr Design weiterentwickeln, kann MATLAB Coder Änderungen automatisch in den generierten Code übertragen. Dies vermeidet kostspielige manuelle Übersetzungsfehler und bedeutet somit, dass Sie Iterationen schneller durchführen und Ihr Produkt schneller auf den Markt bringen können. Mit MATLAB Coder können Sie Ihren standardkonformen MATLAB-Referenzcode sowohl für die Erstellung von Prototypen als auch für die Produktion verwenden. So können Sie Arbeitsabläufe und die Kommunikation innerhalb Ihrer Organisation vereinfachen.

Generieren Sie lesbaren und plattformunabhängigen C- und C++-Code aus MATLAB-Code, einschließlich über 1.200 Funktionen für Anwendungen von Bildverarbeitung und Computer Vision bis hin zur Entwicklung fortschrittlicher DSP- und Kommunikationssysteme.

Generierter Code für Matrizen-Multiplikationen.


Erfolge mit MATLAB Coder

Sehen Sie, wie andere Ingenieure wie Sie mit MATLAB Coder erfolgreich sind:

  • VivaQuant hat Festkomma-C-Code aus Herzrhythmus-Überwachungsalgorithmen generiert und ihn für einen ARM®Cortex®-M-Prozessor kompiliert.
  • Delphi hat C-Code für einen Radarsensor-Ausrichtungsalgorithmus im Automobilbereich generiert und ihn für einen ARM10-Prozessor kompiliert.
  • Respiri hat C-Code aus akustischen Atmungsüberwachungsalgorithmen generiert und ihn für eine iPhone-App, eine Android™-App und Cloud-basierte Serversoftware kompiliert.
  • DorsaVi hat Bewegungsanalyse-Algorithmen für Anwendungen in den Bereichen Medizin, Sport und Sicherheit am Arbeitsplatz mit MATLAB Coder entwickelt.

ViMove-Sensoren von DorsaVi in einem Lauftest.


Unterstützte Toolboxen und Funktionen

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

Wenn Ihr Algorithmus zusätzliche Funktionen und Features verwendet, sollten Sie auch die Verwendung von MATLAB Compiler SDK™ in Erwägung ziehen, um die vollständige Anwendung einschließlich der grafischen Benutzeroberflächen bereitzustellen. (Siehe ausführlichen Vergleich der Bereitstellungsansätze von MATLAB Coder und MATLAB Compiler.)

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


Erstellen von Prototypen auf Hardware

Mit der MATLAB Coder-App (oder entsprechenden Befehlszeilen-Funktionen) können Sie Code schnell generieren und für Ihre Hardware kompilieren, unabhängig vom Zweck Ihrer Anwendung, wie beispielsweise Signalverarbeitung, Computer Vision, Bildverarbeitung oder Regelungssysteme. Generieren Sie Code und testen Sie ihn als Prototyp auf eingebetteten Plattformen wie Raspberry Pi oder Arduino®. Integrieren Sie auf mobilen Plattformen den generierten Code in Ihre eigene App und führen Sie ihn auf iPhones, iPads oder Android-Geräten aus. Dabei kann Ihr Code auch auf Onboard-Sensoren wie die Videokamera, das Mikrofon und den Beschleunigungsmesser zugreifen. Wenn Ihre Zielhardware ein Intel®-basierter Desktop-PC oder Laptop ist, kompilieren Sie den generierten Code in eine eigenständige statische oder dynamische Bibliothek oder in eine selbstständig ausführbare Datei, die außerhalb der MATLAB-Umgebung ausgeführt werden kann.

Generieren Sie Code und erstellen Sie ein Executable um frühzeitig auf einem Desktop-PC zu testen.
Integrieren Sie von MATLAB Coder generierten Code in eine iPhone- oder iPad-App mithilfe der Xcode IDE von Apple.

Durch die Verwendung von MATLAB Coder mit Embedded Coder® können Sie von Prototypen auf die Produktion übergehen. Generieren Sie Code, der prozessorspezifische Intrinsics nutzt. Dieser kann schneller ausgeführt werden als standardmäßiger ANSI/ISO-C- oder C++-Code. Es sind Bibliotheken für ARM® Cortex®-A- und Cortex®-M-Plattformen verfügbar. Sie können ein Ausführungszeitprofil für den generierten eigenständigen Code erstellen. Überprüfen Sie das numerische Verhalten des generierten Codes durch SIL-Ausführung (Software-in-the-Loop) und PIL-Ausführung (Processor-in-the-Loop). Erhalten Sie abschließend Einblicke in den generierten Code, indem Sie interaktive Rückverfolgbarkeitsberichte nutzen, die zeigen, woher der generierte C-Code stammt und in was Ihr MATLAB-Code überführt wurde. Mithilfe eines Berichts über Metriken für statischen Code können Sie die Arbeitsspeichernutzung verstehen.

Indem Sie MATLAB Coder mit GPU Coder™ verwenden, können Sie Prototypen auf GPUs wie der NVIDIA® Tesla® und auf eingebetteten Jetson™-Plattformen erstellen. Generieren Sie hierzu CUDA®-Code für Deep Learning, Embedded Vision und autonome Systeme.


Integration mit Software

MATLAB Coder generiert C-Code mit einfachen Schnittstellen, und dieser Code ist leicht zu integrieren. Sie können den generierten Code als Quellcode, statische Bibliotheken oder dynamische Bibliotheken in Ihre Anwendung integrieren, die außerhalb von MATLAB auf dem Desktop, in der Cloud, auf mobilen Geräten oder auf eingebetteten Systemen ausgeführt wird. Verwenden Sie plattformspezifische Bibliotheken (wie LAPACK für lineare Algebra und FFTW für Fast-Fourier-Transformationen), um maximale Leistung zu erreichen. Alternativ können Sie reinen Quellcode generieren, um optimale Lesbarkeit und Plattformunabhängigkeit zu erzielen

Integrieren Sie von MATLAB Coder generierten Code in ein übergeordnetes Projekt in Microsoft Visual Studio.
Integrieren Sie von MATLAB Coder generierten Code in eine iPhone- oder iPad-App mithilfe der Xcode IDE von Apple.

Der generierte Code verwendet C-Typen auf natürliche Weise und bietet eine einfache Schnittstelle für die Integration mit externem Code. Für Strukturen, Arrays fester Größe, Skalare und alle numerischen Datentypen verwendet der generierte Code die entsprechenden C-Typen direkt. Erweiterte Datentypen wie Arrays und Objekte mit variabler Größe erzeugen umfassendere C-Typen und Dienstprogrammfunktionen, die die Arbeit mit ihnen vereinfachen. Es wird eine exemplarische Main-Funktion generiert, die zeigt, wie Sie den generierten Code aufrufen können. Sie können Arrays wahlweise mit zeilen- oder spaltenorientiertem Layout generieren, abhängig von den Anforderungen Ihrer Softwareumgebung. Für die Integration mit externen Bildverarbeitungs-Bibliotheken (wie OpenCV) unter Vermeidung von Datenkopien oder der Berechnung von transponierten Matrizen, können Sie das zeilenorientierte Array-Layout wählen.

Wenn Sie über vorhandene bewährte C-Bibliotheken oder -Komponenten verfügen, können Sie sie in MATLAB einbringen, um in der MATLAB-Umgebung mithilfe der Generierung von MEX-Funktionen genauer testen zu können. Dann können Sie coder.ceval verwenden, um diese Komponenten auch aus Ihrem generierten Code aufzurufen. 

Führen Sie in MATLAB geschriebene Unit Tests für Ihren handgeschriebenen C-Code aus und prüfen Sie, ob Veränderungen an Ihrem C-Code zum Fehlschlagen von Unit Tests führen. Verwenden Sie Visualisierungen und andere Tools, die in MATLAB zur Verfügung stehen, um das Verhalten Ihres Codes zu verstehen.

Durch Verwendung von MATLAB Coder im Verbund mit Embedded Coder können Sie das Erscheinungsbild und den Eindruck des generierten Codes steuern. Erfüllen Sie die Coding-Standards Ihres Unternehmens mithilfe von benutzerdefinierten #define-Direktiven sowie Datei- und Funktionsbannern. Wenn Sie MISRA-konformen Code benötigen, können Sie in einem Eingabefeld die Codegenerierung anpassen, um die Konformität zu maximieren. Verwenden Sie den interaktiven Rückverfolgbarkeitsbericht, um Einblicke in die Zuordnung zwischen Ihrem MATLAB-Code und dem generierten C-Code zu erhalten. 

Interaktiver Rückverfolgbarkeitsbericht mithilfe von MATLAB Coder mit Embedded Coder


Leistungsoptimierung für den generierten Code

MATLAB Coder wendet automatisch Optimierungen auf Ihren Code an, damit Sie von Anfang an die besten Ergebnisse erhalten, aber ermöglicht Ihnen auch die manuelle Anpassung zur Erzielung von Kompromissen zwischen Ausführungsgeschwindigkeit, Arbeitsspeichernutzung, Lesbarkeit und Plattformunabhängigkeit. Es stehen Profiling-Tools zur Verfügung, mit denen Sie die Leistung des Codes besser verstehen und Engpässe identifizieren können.

Um noch mehr Beschleunigung zu erreichen, können Sie Drittanbieter-Bibliotheken nutzen. Beispielsweise können Sie optional Code generieren, der optimierte Bibliotheken wie LAPACK und FFTW aufruft, falls diese Bibliotheken in Ihrer Zielumgebung verfügbar sind. Sie können C-Code für die kritischsten Teile Ihres Algorithmus manuell schreiben und MATLAB Coder den Rest generieren lassen.

Generieren Sie Multicore-Code mit gemeinsamem Arbeitsspeicher aus parfor-Schleifen und kompilieren Sie ihn mit einem Compiler, der die OpenMP-Anwendungsschnittstelle unterstützt. Um verteilte Parallelität zu erreichen, verwenden Sie Parallel Computing Toolbox™.

Durch die Verwendung von MATLAB Coder mit Embedded Coder können Sie den generierten Code noch weiter optimieren, indem Sie prozessorspezifische intrinsische Funktionen aufrufen, die auf den betreffenden Prozessoren schneller ausgeführt werden. Es sind Bibliotheken für die ARM® Cortex-A- und Cortex-M-Plattformen verfügbar.

Beispiel für generierten Code mit Aufrufen von OpenMP.


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

Verwenden Sie Ihre vorhandenen MATLAB-Tests, um das Verhalten des generierten Codes zu verifizieren, bevor Sie ihn in Ihre Anwendung integrieren. Die Bewertung von Ergebnissen ist in der interaktiven MATLAB-Umgebung leicht. Mit dem MATLAB Unit Testing Framework (einem Teil von MATLAB), können Sie schnell einen umfangreichen Satz von Regressionstests entwickeln. MATLAB Coder kann Unit Tests von MATLAB interpretieren und kann sie verwenden, um den generierten C-Code mit Hilfe von Instrumentierung zu verifizieren. Die Instrumentierung ermöglicht klare und wiederholbare Diagnosen für Laufzeitfehler und verhindert, dass MATLAB aufgrund von fehlerhaftem Code versagt. 

Nutzen Sie das MATLAB Unit Testing Framework, um zu überprüfen, ob Veränderungen an Ihrem MATLAB-Code zum Fehlschlagen von Unit Tests für den C-Code führen, der von MATLAB Coder generiert wurde.

Indem Sie MATLAB Coder mit Embedded Coder verwenden, können Sie das numerische Verhalten des fertigen generierten Codes auf der Host- und Zielplattform durch SIL- und PIL-Ausführung überprüfen.

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


Beschleunigen von Algorithmen

Als Teil einer Gesamtstrategie zur Beschleunigung Ihrer MATLAB-Algorithmen können Sie C-Code mit MATLAB Coder generieren und ihn so paketieren, dass Sie ihn wie eine gewöhnliche MATLAB-Funktion (als MEX-Funktion) aufrufen können. 

Generieren Sie eine MEX-Datei, um die Simulation eines DCT-basierten Bildkomprimierungs- oder Dekomprimierungsalgorithmus zu beschleunigen.

Das Ausmaß der Beschleunigung hängt von Ihrem MATLAB-Code ab. Die optimierten numerischen Routinen und der stark vektorisierte Code in MATLAB können im Allgemeinen nicht durch Codegenerierung beschleunigt werden. Code mit Schleifen, Strukturen und Festkommatypen wird im Allgemeinen stärker beschleunigt. Code mit parfor -Schleifen nutzt mehrere Kerne, wenn Ihr C-Compiler den OpenMP-Standard unterstützt. Sie können ein Ausführungszeitprofil für die generierte MEX-Funktion erstellen, um Engpässe zu identifizieren und Ihre Optimierungen darauf zu konzentrieren.

Für manche Anwendungen können Sie mehrere Beschleunigungstechniken kombinieren, wie beispielsweise die Verwendung der Vektorisierung und Vorabzuweisung, System objects™ und Parallel Computing Toolbox mit der Generierung der MEX-Funktion.

Durch die Verwendung von MATLAB Coder mit GPU Coder können Sie die Ausführungsgeschwindigkeit erhöhen, indem Sie parallelisierbare Teile Ihres Algorithmus auf der GPU ausführen.

Und schließlich: Wenn Sie eine eigenständige Anwendung mit MATLAB Compiler oder MATLAB Compiler SDK bereitstellen, können Sie die Geschwindigkeit der bereitgestellten Anwendung erhöhen, indem Sie wichtige Komponenten durch MEX-Funktionen ersetzen, die Sie mit MATLAB Coder generiert haben.

In diesem Webinar lernen Sie, wie Sie verschiedene Techniken verwenden können, um Ihre Kommunikationssystemsimulationen in MATLAB und Simulink zu beschleunigen.