MATLAB Coder

Generare il codice C e C++ dal codice MATLAB

 

MATLAB Coder™ genera i codici C e C ++ a partire dal codice MATLAB® per un’ampia gamma di piattaforme hardware, dai sistemi desktop all'hardware embedded. Supporta buona parte del linguaggio MATLAB e una vasta gamma di toolbox. È possibile integrare il codice generato nei propri progetti come codice sorgente, librerie statiche o librerie dinamiche. Il codice generato è leggibile e portabile. Sarà possibile combinarlo con le parti fondamentali del proprio codice C e C++ esistente e delle librerie. È inoltre possibile anche pacchettizzare il codice generato come funzione MEX da usare in MATLAB.

Se usato con Embedded Coder®, MATLAB Coder consente di personalizzare il codice, creare ottimizzazioni target-specific, tracciare il codice ed effettuare verifiche software-in-the-loop (SIL) e processor-in-the-loop (PIL).

Per distribuire programmi MATLAB come applicazioni standalone, usare MATLAB Compiler™. Per generare componenti software per l’integrazione con altri linguaggi di programmazione, usare MATLAB Compiler SDK™.

Per iniziare:

Eseguibile ovunque

Genera codice sorgente ANSI C/C++ leggibile e portabile. Distribuisci codice senza royalty.

Distribuire algoritmi senza royalty

Utilizza qualsiasi compilatore C/C++ per compilare ed eseguire il codice che hai generato su qualsiasi hardware, dai sistemi desktop ai dispositivi mobili all’hardware embedded. Il codice generato è senza royalty: distribuiscilo gratuitamente ai tuoi clienti per applicazioni commerciali.

Codice generato per moltiplicazione tra matrici.

Toolbox e funzioni supportate

MATLAB Coder genera il codice da una vasta gamma di funzionalità del linguaggio MATLAB, che i progettisti utilizzano per sviluppare algoritmi come componenti di sistemi di dimensioni maggiori. Ciò include oltre 2500 operatori e funzioni da MATLAB e toolbox complementari.

Supporto per linguaggio e toolbox MATLAB per la generazione di codice.

Distribuire codice C++ da MATLAB

Integra il codice generato con codice sorgente C++ orientato agli oggetti.

Generare codice C++ con i namespace

MATLAB Coder è in grado di generare codice C++ in un namespace, così da semplificare l’integrazione con altri codici sorgente che potrebbero presentare nomi di tipi di dati o funzioni uguali. Il generatore di codice pacchettizza tutte le funzioni generate e le definizioni di tipo nel namespace.

Codice generato che integra variabili con nomi di tipi di dati identici usando dei namespace.

Generare classi C++ dalle classi MATLAB

MATLAB Coder produce classi C++ dalle classi del proprio codice MATLAB, comprese le classi di valore, le classi di handle e i system object. È possibile compilare Il codice generato in eseguibili o librerie C++ e quindi integrarlo nel proprio codice sorgente C++ esistente.

Codice C++ generato con un’interfaccia di classe.

Utilizzo dinamico di array C++ allocati in interfacce di funzioni generate

Genera codice C++ per le funzioni MATLAB che accettano o restituiscono un array di dimensioni non note al momento della compilazione o con un confine che supera una soglia predefinita. Nel codice generato, la memoria per l’array viene allocata in modo dinamico e implementata come un template di classe che prende il nome di coder::array. Oltre alla deallocazione di memoria exception-safe, coder::array fornisce le API per accedere e gestire l’array dinamico.

Passaggio dinamico degli array allocati alle funzioni generate.

Distribuire reti di deep learning

Genera codice da reti di deep learning addestrate.

Distribuire algoritmi di deep learning end-to-end

Distribuisci una serie di reti di deep learning addestrate come ResNet-50 e MobileNet-v2, oltre a LSTM e altri layer da Deep Learning Toolbox™, a CPU Intel® e ARM® Cortex®. Genera codice per la pre-elaborazione e la post-elaborazione insieme alle proprie reti di deep learning addestrate per distribuire algoritmi completi.

Generare codice ottimizzato per l’inferenza

Poiché MATLAB Coder genera solo il codice necessario per eseguire l’inferenza con il proprio algoritmo specifico, il codice è più veloce e usa meno memoria rispetto alle altre soluzioni di deep learning. Il codice generato consente di richiamare le librerie ottimizzate, tra cui Intel MKL-DNN per i processori Intel e ARM Compute Library per i processori ARM Cortex. Utilizza GPU Coder™ per accelerare o distribuire gli algoritmi tramite la generazione di codice CUDA® eseguibile su qualsiasi NVIDIA® GPU moderno.

Prototipare sull’hardware

Accedi velocemente all’hardware con la conversione automatica del tuo algoritmo in codice C/C++.

Prototipare su desktop e piattaforme cloud

Utilizza l'app MATLAB Coder o funzioni equivalenti da riga di comando per generare rapidamente codice per l'elaborazione del segnale, la visione artificiale, il deep learning, i sistemi di controllo o altre applicazioni e quindi compila il codice per il tuo hardware.

Prototipazione rapida di algoritmi su desktop e piattaforme cloud.

Prototipare su piattaforme embedded e mobile

Utilizzalo su qualsiasi dispositivo integrando manualmente il codice generato con la tua applicazione. Automatizza il processo per Raspberry Pi utilizzando il pacchetto di supporto MATLAB per Raspberry Pi.

Prototipazione rapida di algoritmi su piattaforme embedded e mobile.

Dalla prototipazione alla produzione

Utilizza MATLAB Coder con Embedded Coder per generare codice che sfrutta le funzioni intrinseche del processore, eseguibili più velocemente rispetto ai codici standard C/C++ ANSI/ISO.

Profiling del tempo di esecuzione del codice standalone generato.

Integrazione con il software

Riutilizza gli algoritmi MATLAB come codice C/C++ all’interno del tuo ambiente software.

Generare il codice con interfacce semplici e facili da integrare

Il codice generato utilizza i tipi C/C++ in modo naturale, semplificando l’integrazione con il codice esterno. È possibile integrare il codice generato come codice sorgente o librerie. Si è inoltre in grado di importare le librerie o i componenti C/C++ esistentiin MATLAB per eseguire test più attendibili e quindi in grado di essere automaticamente richiamati anche dal codice generato.

Report di tracciabilità interattiva utilizzando MATLAB Coder con Embedded Coder.

Ottimizzare le prestazioni del codice generato

Applica le ottimizzazioni disponibili per regolare il tradeoff tra velocità di esecuzione, utilizzo della memoria, leggibilità e portabilità. Utilizza gli strumenti di profiling per identificare i colli di bottiglia. Per aumentare ulteriormente le prestazioni, genera il codice OpenMP multicore e richiama librerie ottimizzate come LAPACK, BLAS e FFTW, quando disponibili.

Esempio di codice generato con chiamate a OpenMP.

Riutilizzare i test MATLAB sul codice generato prima dell'integrazione

Riutilizza i test MATLAB esistenti per verificare il comportamento del codice generato nell'ambiente interattivo MATLAB. Utilizza Unit Testing Framework di MATLAB per sviluppare rapidamente un ricco set di test di regressione utilizzabili per verificare il codice C/C++ generato.

Verifica del comportamento del codice generato prima di integrarlo con la tua applicazione.

Accelerare gli algoritmi

Genera codice C/C++ e compilalo per utilizzarlo in MATLAB.

Accelerare gli algoritmi su CPU

È possibile richiamare il codice generato come funzioni MEX dal proprio codice MATLAB per velocizzare l'esecuzione, anche se le prestazioni varieranno a seconda della natura del proprio codice MATLAB. È possibile profilare le funzioni MEX generate per identificare i colli di bottiglia e concentrare i propri sforzi di ottimizzazione.

Profilazione delle funzioni MEX per identificare i colli di bottiglia nelle prestazioni.

Accelerare gli algoritmi utilizzando GPU

Utilizza Parallel Computing Toolbox™ per accelerare gli algoritmi in esecuzione su MATLAB. Utilizza GPU Coder per generare il codice CUDA per l’accelerazione o la distribuzione da eseguire su qualsiasi NVIDIA GPU moderno.

Funzionalità recenti

Codice C++

Generazione di classi C++ da classi MATLAB

Codice C++

Utilizzo dinamico di array C++ allocati in interfacce di funzioni generate

Coder Type Editor

Creare e modificare tipi di input in modo interattivo

FFT più rapida

Prestazioni migliorate del codice generato per le funzioni della trasformata di Fourier veloce (FFT)

Datetime e timetable

Generazione di codice per array datetime e timetable

Generazione di codice con Optimization Toolbox

Generare codice C per problemi con vincoli lineari e obiettivi quadratici utilizzando quadprog

Reti Long Short-Term Memory (LSTM)

Generazione di codice per reti ricorrenti, quali LSTM

Reti di deep learning

Generazione di codice per DenseNet-201 e Xception

Consulta le note di rilascio per ulteriori informazioni su queste caratteristiche e sulle funzioni corrispondenti.

Panel Navigation

La soddisfazione di generare codice C da MATLAB

Scopri consigli e best practice per lavorare con MATLAB Coder e leggi le storie di successo relative all’applicazione del codice generato di aziende come Delphi, Baker Hughes, iSonea e dorsaVi.