The Mathworks, företaget bakom Matlab, säger nu att man löst problemet. Med nykomlingen Matlab Coder kan en algoritm eller en modell skriven i Matlab direkt översättas till C- eller C++-kod. Förvisso krävs ibland lite handpåläggning, som att definiera datatyper och att i förekommande fall omvandla flyttal till fixtal. Och hela Matlab stöds inte, det handlar om en stor men dock delmängd.
– Vi har tusentals användare här i Norden som kan börja använda verktyget direkt. De har tidigare fått skriva C-koden själva, eller lägga ut den på konsulter, säger Peter Sandberg på Matlabs kontor i Kista.
Företaget ser fyra primära områden där nyheten kan komma till pass. Att ta fram prototyper till algoritmer för att testa på exempelvis en pc är förstås en viktig tillämpning, liksom att kunna ta fram mjukvara som ska integreras med annan mjukvara. Likaså att accelerera exekveringen av algoritmer, och att implementera koden i styrkretsar, DSP:er eller andra processorer för inbyggnad.
– En stor poäng är att utvecklingsarbetet går fortare. Konstruktören får en enda referensmodell - i Matlab - och kan verifiera den snabbare. Man slipper också manuell kodning vilket kan spara både tid och konsultarvoden, säger Peter Sandberg.
Inom Matlab går det att optimera modellen eller algoritmen så att den kan exekveras så snabbt som möjligt. Något stöd för minimering av strömförbrukningen finns dock inte i dagsläget.
Matlab Coder är en fristående produkt som kräver att användaren redan har Matlab installerat. Den är en del av releaseversion 11 A som nu släpps. Samtidigt har The Mathworks rensat upp i floran av sina andra kodgenereringsverktyg, så att bolaget nu bara har tre, förutom Matlab Coder även Simulink Coder och Embedded Coder. Att kunna alstra C-kod från Matlabs systerprogram Simulink har gått tidigare, men krävt flera påbyggnadsverktyg, något som nu förenklats.
Embedded Coder är ytterligare ett påbyggnadsprogram. Det kan ta kod från Matlab Coder eller Simulink Coder och optimera för ett urval processorer eller DSP:er, från exempelvis Texas Instruments, Analog Devices, Freescale eller Arm. Koden anpassas då för att dra maximal nytta av målkretsens arkitektur och funktionalitet.