Forum: Digitale Signalverarbeitung / DSP / Machine Learning Matlab Compiler


von Hansi (Gast)


Lesenswert?

Hey Leude,

ich habe mal eine grundlegende Frage zu Matlab. Es gibt ja diesen Matlab 
Compiler der dazu in der Lage ist dll´s oder exe files zu erstelle. Das 
heisst ich "compiliere" mein m.file und kann daraus eine lauffähige exe 
Datei erstellen. Auf einem anderen Rechner benötige ich dazu nur die 
Matlab Runtime Libary um diese exe zu starten. Das entspricht ja dem 
Vorgang bei normaler DSP oder µC Programmierung. Hier compiliere und 
bekomme ein make-file das auf meinen controller wird.

Meine Frage:

Wie ist das, wenn ich in Matlab ein Programm schreibe und lasse dies in 
Matlab laufen. Läuft das Programm mit bzw. über einen Interpreter oder 
wie macht Matlab das?

von Hansi (Gast)


Lesenswert?

Zu einfach oder weiß es keiner???

von baja (Gast)


Lesenswert?

Hallo,

du schreibst eigentlich Matlab Skripte und führst diese im Interpreter 
aus.
Kommliliert wird da meines Wissens nichts.

Mfg

von Klaus (Gast)


Lesenswert?

baja schrieb:
> du schreibst eigentlich Matlab Skripte und führst diese im Interpreter
> aus.
> Kommliliert wird da meines Wissens nichts.

Wenn man keine Ahnung hat, einfach mal die Fresse halten. Es gibts auch 
Matlab-Compiler, die ebend den Code compilieren und Maschinencode draus 
machen.

Benutzt hab ich das aber nie und kann da leider nichts weiter zu sagen.

von MatlabNutzer (Gast)


Lesenswert?

Ich habe zwar nicht so ganz den Zusammenhang deiner Frage mit dem 
Matlab-Compiler verstanden, aber ich werde trotzdem mal versuchen deine 
Frage zu beantworten.

Skripte oder auch Funktionen, die du als m-Files geschrieben hast, 
werden interpretiert. Allerdings hat Matlab einen Just-in-time-Compiler, 
was im Vergleich zu Octave oder Scilab erhebliche 
Geschwindigkeitsvorteile bringt. Aber das, was der JIT macht, hat nicht 
so sehr viel mit einem "normalen" Compiler zu tun.

Etwas anders sieht das Ganze wieder aus, wenn du Simulink benutzt. Da 
gibt es ja auch die Möglichkeit m-File s-Functions zu schreiben. Diese 
werden dann mit deinem eigenen Compiler (kann man auswählen z.B. gcc, 
vc++, ...) kompiliert und in mex-Files gepackt. (im Prinzip wie dlls)

Um viellicht doch noch ein Mal auf den Matlab-Compiler zurückzukommen: 
Das ist eine extra Toolbox, die nicht ganz billig ist. Das Ziel ist eben 
genau, dass du von Matlab unabhängige Bibliotheken oder Programme 
erstellen kannst. Der hat mit dem normalen Matlab aber nichts zu tun.

von manoh (Gast)


Lesenswert?

Klaus schrieb:
> baja schrieb:
>> du schreibst eigentlich Matlab Skripte und führst diese im Interpreter
>> aus.
>> Kommliliert wird da meines Wissens nichts.
>
> Wenn man keine Ahnung hat, einfach mal die Fresse halten. Es gibts auch
> Matlab-Compiler, die ebend den Code compilieren und Maschinencode draus
> machen.
>
> Benutzt hab ich das aber nie und kann da leider nichts weiter zu sagen.

Versteh ich das jetzt richtig? - Du hast auch keine Ahnung und hältst 
auch nicht die Fresse???

von Marius W. (mw1987)


Lesenswert?

Der MATLAB Compiler ist in der Tat nur ein kleiner Umbau um die m-Files 
herum. Richtig kompiliert wird da nichts.

Wenn du wirklich C-Code aus deinem MATLAB-Code haben möchtest, musst du 
dir den RealTimeWorkshop mal anschauen. Damit kannst du (mit relativ 
großen Einschränkungen) den MATLAB-Code kompilieren.

Ich habe das in meiner Bachelorarbeit benutzt... Ist im Hinblick auf 
Optimierung aber nicht der Hit.

MfG
Marius

von Hansi (Gast)


Lesenswert?

Auch wenn manche die Frage nicht verstanden haben, wurde sie mir dennoch 
beantwortet :-) Ich weiß das der Matlab Compiler ein Extra "Tool" 
darstellt. Ich habe auch beides zur Verfügung. Ich wollte nur wissen, ob 
ich das alles richtig verstanden habe. Da ich bisher immer den normalen 
Ablauf beim programmieren von µC´s oder DSP kenne. Da wird geschrieben 
und danach übersetzt/compiliert. In Matlab wird es eben interpretiert 
und das war mir neu. Danke für die Aufklärung.

von blubb (Gast)


Lesenswert?

Standardmässig werden m-files als Interpretersprache gehandhabt - manche 
Matlabfunktionen sind in Maschinencode implememntiert.


(Funktion emlmex)
(bei Matlab dabei)
Es gibt bei Matlab standardmässig die Möglichkeit embedded Matlabcode in 
Maschinencode übersetzen zu lassen.
Aus der m-file Interpretersprache wird dann ein Programm in 
Maschinencode + Interface für Matlab. Leider läuft der Code nur falls 
Matlab installiert ist

Auf den C-Code hat man keinen Zugriff - man kannn aber z.B. den Compiler 
auswählen (bei mir gcc)

Man muss die Funktion als "embedded" Matlabcode programmieren (fast so 
ähnlich wie normal).


(Matlab Compiler)
Extra Toolbox - man kann jeden Matlabcode compilieren lassen und 
Standaloneanwendungen generieren.

(Realtime Workshop)
Extra Toolbox - Man kann aus Simulinkplaenen C Code erzeugen und aus 
(embedded) Matlabcode - man hat Zugriff auf den C Code.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.