Hauptmerkmale

Mit MATLAB Coder können Sie den generierten Code als Quellcode, statische Bibliotheken oder dynamische Bibliotheken in Ihre Projekte integrieren. Es wird eine Beispielhauptfunktion als Vorlage zur Verfügung gestellt, damit Sie den generierten Code in Ihre Anwendung integrieren können. Sie können auch externen Code mit MATLAB-Code integrieren, der für die Codegenerierung vorgesehen ist. Der externe Code kann aus externen Bibliotheken, Objektdateien oder C/C++-Quellcode bestehen.

Integrieren Sie von MATLAB ® Coder™ generierten Code in ein übergeordnetes Projekt in Microsoft ® Visual Studio ® .

Durch die Verwendung von MATLAB Coder mit Embedded Coder® können Sie die Codeeffizienz noch weiter optimieren und den generierten Code anpassen. Anschließend können Sie das numerische Verhalten des generierten Codes durch SIL-Ausführung (Software-in-the-Loop) und PIL-Ausführung (Processor-in-the-Loop) überprüfen.

MATLAB Coder arbeitet mit Simulink Coder, um C-Code aus Simulink®-Modellen zu generieren, die MATLAB-Code enthalten.

Sie können Ihre MATLAB-Programme (einschließlich grafischer Elemente) auch als benutzerdefinierte in C/C++, .NET, Java® und Python® geschriebene Anwendungen integrieren und diese für den Desktop, das Internet oder Unternehmenssysteme unter Verwendung von MATLAB Compiler SDK bereitstellen. MATLAB Central bietet einen ausführlichen Vergleich der Verwendung dieser Ansätze.

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

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

Der 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 1200 Operatoren und Funktionen aus MATLAB und Toolboxen, einschließlich:


Anwendungsbeispiele für den MATLAB Coder

Mit MATLAB Coder können Entwicklungsingenieure Algorithmen in MATLAB generieren, um lesbaren und plattformunabhängigen C/C++-Code zu generieren. Dieser generierte Code kann verwendet werden:

  • Zur Integration von MATLAB-Algorithmen in Form kompilierter Bibliothekskomponenten in andere Software wie z. B. eigenentwickelte Simulatoren
  • Zur Beschleunigung rechenintensiver Anteile Ihres MATLAB-Codes durch Generieren einer MATLAB Executable (MEX-Funktion), die den kompilierten C/C++-Code aufruft
  • Zum Prototyping Ihrer MATLAB-Algorithmen auf PCs in Form von Standalone-Executables und zum Weitergeben des generierten Codes als Entwurfsspezifikation an die Softwareingenieure
  • Zur Implementierung und Verifizierung von MATLAB-Algorithmen auf Embedded-Prozessoren
Integrieren Sie von MATLAB ® Coder™ generierten Code in ein übergeordnetes Projekt in Microsoft ® Visual Studio ® .
Generieren Sie eine MEX-Datei, um die Simulation eines DCT-basierten Bildkomprimierungs- oder Dekomprimierungsalgorithmus zu beschleunigen.
Generieren Sie Code und erstellen Sie eine Executable zum Prototyp auf einem Desktop-PC.
Integrieren Sie von MATLAB Coder™ generierten Code in eine iPhone- oder iPad-App mithilfe von Xcode IDE von Apple.

MATLAB Coder use cases.


Codegenerierung aus MATLAB

Für die Übersetzung von MATLAB-Algorithmen in C-Code müssen unter anderem die Anforderungen für die Implementierung definiert werden. Die MATLAB Coder-App und vergleichbare Befehlszeilen-Funktionen führen Sie durch diesen iterativen Vorgang, während Sie weiter mit der MATLAB-Sprache arbeiten.

Mit MATLAB Coder können Sie Ihren MATLAB-Algorithmus für die Codegenerierung vorbereiten, indem Sie Ihren MATLAB-Code analysieren, um Datentyp und -größen für Ihre Eingaben vorzulegen. Sie können sicherstellen, dass Ihr Algorithmus für die Codegenerierung bereit ist, indem Sie eine MEX-Funktion generieren, die den Code wrappt, damit er wieder in MATLAB ausgeführt werden kann. Der MATLAB Coder erzeugt einen Bericht mit allen Fehlern, die Sie beheben müssen, damit der MATLAB-Algorithmus für die Codegenerierung bereit ist. Die Fehlerbehebung und das erneute Generieren der MEX-Funktion werden so lange wiederholt, bis der MATLAB-Algorithmus schließlich die Voraussetzungen für die Codegenerierung erfüllt.

Anschließend können Sie C- oder C++-Quellcode oder eine leistungsoptimierte MEX-Funktion aus Ihrem MATLAB-Algorithmus generieren.

{$translate: "Explore gallery"} (4 Bilder)


Generieren von MEX-Funktionen für Code-Verifikation und -Beschleunigung

Die MEX-Funktion kann anstelle des ursprünglichen MATLAB-Codes aufgerufen werden, um:

  • Prüfen und Verifizieren des kompilierten Codes in MATLAB
  • Die Ausführung zu beschleunigen

{$translate: "Explore gallery"} (2 Bilder)


Prüfen und Verifizieren des kompilierten Codes in MATLAB

Als Teil des iterativen, aus drei Schritten bestehenden Workflows müssen Sie die MEX-Funktion generieren und prüfen, um sicherzustellen, dass sie die gleiche Funktionalität wie der ursprüngliche MATLAB-Code bietet.

Durch Prüfen der MEX-Funktion vor dem Generieren des Codes können Sie Laufzeitfehler erkennen und beheben, die im generierten Code schwerer diagnostiziert werden können. Durch Ausführen Ihrer MEX-Funktion in MATLAB werden Speicherintegritätsprüfungen durchgeführt, mit denen die Arraygrenzen und Dimensionen überprüft und Verstöße gegen die Speicherintegrität in für MATLAB-Funktionen generiertem Code erkannt werden. Wenn ein Verstoß erkannt wird, hält MATLAB die Ausführung an und zeigt eine Diagnosemeldung an.

Die MATLAB Coder-App prüft unter Verwendung der gleichen Eingaben, die verwendet wurden, um den ursprünglichen MATLAB-Code auszuführen und durch Vergleichen der Ergebnisse des ursprünglichen MATLAB-Codes mit den Ergebnissen aus der MEX-Funktion.


Beschleunigung der Ausführung der MATLAB-Algorithmen

Als Teil einer Gesamtstrategie zur Beschleunigung Ihres MATLAB-Algorithmus kann die Generierung einer MEX-Funktion zum Ersetzen Ihres ursprünglichen MATLAB-Codes die Ausführungsgeschwindigkeit erhöhen.

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

Die erreichte Beschleunigung hängt von der Art des Algorithmus ab. Die beste Möglichkeit, um die Beschleunigung festzustellen ist, die empfohlene Vorgehensweise zu befolgen, eine MEX-Funktion mithilfe von MATLAB Coder zu generieren und die Beschleunigung aus erster Hand zu prüfen. Beschleunigungen sind wahrscheinlich, wenn Ihr Algorithmus Folgendes enthält:

  • Datentypen mit einfacher Genauigkeit
  • Festkomma-Datentypen
  • Schleifen mit Status
  • Code, der nicht vektorisiert werden kann

Andererseits sind Beschleunigungen weniger wahrscheinlich, wenn Ihr Algorithmus implizite MATLAB-Multithread-Berechnungen enthält wie beispielsweise fft and svd, Funktionen, die IPP- oder BLAS-Bibliotheken aufrufen, Funktionen, die für die Ausführung in MATLAB auf einem PC optimiert sind wie beispielsweise FFTs oder Algorithmen, bei denen Sie den Code vektorisieren können.

Für manche Anwendungen können Sie auch verschiedene Techniken kombinieren wie beispielsweise die Verwendung der Vektorisierung und Vorabzuweisung, System objects und Parallel Computing Toolbox mit der Generierung der MEX-Funktion, um die Vorteile von Mehrkernprozessoren zu nutzen und Ihren MATLAB-Algorithmus zu beschleunigen.

In this webinar you will learn how to use to various techniques to accelerate your communications system simulations in MATLAB and Simulink.

Multicore-fähige Codegenerierung mithilfe von OpenMP

MATLAB Coder kann multicore-fähigen Code aus parfor-Schleifen generieren. Eine parfor-Schleife wie Standard-MATLAB for-Schleife, führt eine Reihe von Anweisungen über einen Bereich von Werten aus. Da die Iterationen der parfor-Schleife auf mehreren Kernen parallel ausgeführt werden, darf eine Iteration Ihrer Schleife nicht von anderen Iterationen abhängen. Wenn MATLAB Coder feststellt, dass diese Anforderung nicht erfüllt wird, behandelt es die parfor-Schleifen als Standard for-Schleifen.

MATLAB Coder verwendet die Anwendungsschnittstelle Open Multiprocessing (OpenMP), um gemeinsamen Speicher, Mehrkern-Codegenerierung aus mit parfor-Schleifen geschriebenem Code zu unterstützen. Der generierte Code benötigt einen Compiler, der die OpenMP-Anwendungsschnittstelle unterstützt. Während MATLAB Coder so viele Kerne verwendet wie zur Verfügung stehen, können Sie die Anzahl der zu verwendenden Threads angeben. Wenn Sie verteilte Parallelität wünschen, verwenden Sie die Parallel Computing Toolbox.

Beispiel von generiertem Code mit Aufrufen von OpenMP.

Sie können Simulink Coder und Embedded Coder verwenden, um die Funktionen von MATLAB Coder zu erweitern.


MATLAB Coder mit Simulink Coder

Mit dem MATLAB Function-Block für die Simulation und Codegenerierung können Sie MATLAB-Code in Simulink-Modelle integrieren. Mit dem Simulink Coder können Sie aus solchen Simulink-Modellen, die MATLAB-Code enthalten, Code generieren.

Simulink-Modell zur Radarverfolgung. Das Modell enthält einen in MATLAB geschriebenen Kalman-Filteralgorithmus, der über den MATLAB Function-Block aufgerufen wird.

MATLAB Coder mit Embedded Coder

Durch die Verwendung von MATLAB Coder mit Embedded Coder können Sie die Codeeffizienz noch weiter optimieren und den generierten Code anpassen. Embedded Coder generiert Code für unterstützte Embedded-Prozessoren, für On-Target Rapid Prototyping boards sowie für in der Massenfertigung eingesetzte Mikroprozessoren. Er erweitert den MATLAB Coder und Simulink Coder durch die Bereitstellung von Konfigurationsoptionen und hochentwickelten Optimierungen, die eine differenzierte Steuerung der Funktionen, Dateien und Daten des generierten Codes ermöglichen. Der Embedded Coder verbessert die Codeeffizienz und erleichtert die Integration mit in der Serienproduktion eingesetztem Code, Datentypen und Kalibrierparametern. Anschließend können Sie das numerische Verhalten des generierten Codes durch SIL-Ausführung und PIL-Ausführung überprüfen.

{$translate: "Explore gallery"} (2 Bilder)