www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Matlab Compiler

Autor: Hansi (Gast)
Datum:

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?
Autor: Hansi (Gast)
Datum:

Zu einfach oder weiß es keiner???
Autor: baja (Gast)
Datum:

Hallo,

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

Mfg
Autor: Klaus (Gast)
Datum:

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.
Autor: MatlabNutzer (Gast)
Datum:

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.
Autor: manoh (Gast)
Datum:

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???
Autor: Marius Wensing (mw1987)
Datum:

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
Autor: Hansi (Gast)
Datum:

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.
Autor: blubb (Gast)
Datum:

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.

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net