mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Matlab Compiler


Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu einfach oder weiß es keiner???

Autor: baja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Mfg

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MatlabNutzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: manoh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail ü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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.