WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlab in Simulink übersetzen

 

Matlab.lab
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 01.10.2009, 14:22     Titel: Matlab in Simulink übersetzen
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem; ich hab mit Matlab ein Programm geschrieben.. Nachdem aber die Umwandlung in C mit den neuen Versionen nicht mehr funktioniert, möchte ich das Problem über Simulink lösen.
Wie aber kann ich mein mfile in ein mdl file umwandeln?
Ich hoffe Ihr könnt mir helfen! Vielen Dank schonmal.
Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 01.10.2009, 15:46     Titel:
  Antworten mit Zitat      
Ja, seit 11 Versionen wird kein direkter C-Code mehr generiert. Die Technologie wurde umgestellt um die bis dahin nicht unterstützten Fälle "Objekte" und "EVAL" (um nur die wichtigsten zu nennen) zu unterstützen. Einige Anwender haben jedoch damals den generierten C-Code in andere Anwendungen eingebaut und musste andere Ansätze finden.

Eine Neumodellierung in Simulink ist ein möglicher Weg, da der Real-Time Workshop C-Code aus Simulink generiert. Aber auch hier können Einschränkungen ein Problem darstellen.

Auch wenn es Embedded MATLAB / eml gibt möchte ich nicht pauschal empfehlen einfach nur den alten MATLAB Code in Simulink lauffähig zu machen oder eml zu nutzen. Ich würde gerne mehr über die Applikation wissen. Was wird simuliert? Wie gross ist der Code?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Matlab.lab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 05.10.2009, 11:15     Titel:
  Antworten mit Zitat      
Zitat:

Ich würde gerne mehr über die Applikation wissen. Was wird simuliert? Wie gross ist der Code?


Hallo,

erstmal Danke für die Antwort.
das Programm analysiert in Matlab eine Funktion, sucht z.B. Minima und Maxima, die dann grafisch sichtbar gemacht werden.
Der Code hat dabei etwa 150 Zeilen an Code.
Ich hoffe, du kannst damit was anfangen...
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.10.2009, 12:30     Titel:
  Antworten mit Zitat      
Ja, dass ist ein guter Anfang. Es ist auf jeden Fall keine dynamische Systemsimulation und somit nichts was man gemeinhin in Simulink modelliert. 150 Zeilen heisst für mich "klein" (wegen des Aufwands) und die Tatsache, dass hinten Grafik rauskommen soll lässt mich auch von Simulink abraten.

Was würde denn mit dem generierten C-Code passieren, wenn es ihn denn gäbe?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Matlab.lab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 05.10.2009, 12:47     Titel:
  Antworten mit Zitat      
Der Simulink-Weg kam ja für mich nur deshalb in Frage, weil man darüber in C übersetzen kann - das Simulink selbst wird gar nicht gebraucht.

Den C-Code hätte ich dann auf einen Mikrocontroller übertragen.. (Dazu hab ich ein embedded target, spricht das dann doch wieder für Simulink?)
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.10.2009, 13:25     Titel:
  Antworten mit Zitat      
Na ja, Grafik auf einem Mikrocontroller Wink Schon klar, der Teil natürlich nicht.

Dann empfehle ich den EMLC Befehl. Der ist seit einer Weile bei Real-Time Workshop dabei und übersetzt M in C, sofern es den Anforderungen von Embedded MATLAB genügt.

http://www.mathworks.com/access/hel.....olbox/rtw/ug/bq8j0_1.html

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Matlab.lab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 05.10.2009, 14:01     Titel:
  Antworten mit Zitat      
Allerbesten Dank, ich werds mal probieren :wink:
Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlab.lab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 06.10.2009, 08:42     Titel:
  Antworten mit Zitat      
*push*
jetzt hab ich gelesen, dass viele Leute das Problem in der 2007a Version gelöst haben mit dem emlmex Befehl..
Ich hab das jetzt auch mal angefangen, nur was mach ich jetzt weiterhin mit dieser mex-file? Die muss jetzt in Simulink, oder ist das mex schon mein fertiges C..
Vllt könnte mir ja doch nochmal wer helfen, das wär klasse ^^
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 06.10.2009, 10:47     Titel:
  Antworten mit Zitat      
Der dem MEX File zugrunde liegende C-Code liegt vor? Wenn nicht, dürfte es nicht gehen, bzw. auf eine code re-engineering hinauslaufen. Und das ist ja wohl rechtlich nicht OK.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Matlab.lab
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 07.09.09
Wohnort: Ulm HMS
Version: 2007 a
     Beitrag Verfasst am: 06.10.2009, 11:06     Titel:
  Antworten mit Zitat      
ich habe meine Funktion einfach überstzen lassen mit

Code:

emlmex meinefunktion
 


und jetzt hab ich ein file namens meinefunktion.mexw32
Mit dem weiß ich aber weiter nichts mehr anzufangen..
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 06.10.2009, 11:38     Titel:
  Antworten mit Zitat      
Ach so - ich dachte es gäbe noch ein MEX File im ursprünglichen Code.

Bitte EMLC benutzten nicht EMLMEX.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
torben83
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 19.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2009, 23:44     Titel:
  Antworten mit Zitat      
Hallo zusammen,
Ich würde mich hier gerne mal einmischen.
Ich bin neu hier und arbeite seit 2 Monaten mit Matlab bzw. der Toolbox Simulink.
Mein Problem ist folgendes, ich habe ein Simulationsmodell mit diskreter Abtastung erstellt und ich habe das Problem das bei mir die Rechengeschwindigkeit im Simulink zu langsam ist, wobei ich schon so Sachen wie embedded Matlab-files usw. rausgeschmissen habe.
Im Internet habe ich gelesen, dass es möglich ist die Rechenzeit mit Hilfe von MEX S-functions zu verbessern, da bei Simulationsstart die S-Funktion als ausführbarer Code vorliegt.

Weiß vielleicht jemand von euch, ob mit Hilfe von MEX S-Funktionen die Rechenzeit wirklich schneller wird? Wenn ja kann mir jemand erklären wie ich diese MEX S-Function in C einfach erstellen kann? Wenn ich das richtig verstehe funtkioniert das irgendwie mit diesem Real-Time-Workshop.

Oder gibts eventuell noch andere Möglichkeiten schnellere Rechenzeiten zu erzielen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 20.10.2009, 08:55     Titel:
  Antworten mit Zitat      
C MEX S-Functions können die Ausführung eines Simulink Modells z. T. sehr stark beschleunigen. Es kommt darauf an, dass man den Flaschenhals der Simulation kennt (Profiler) und den dann beschleunigt.

Es gibt sehr, sehr viele Möglichkeiten Simulink-Modelle zu beschleunigen. Ich schlage vor zunächst einmal mit den einfachsten Möglichkeiten zu beginnen.

1. Modell im Accelerator Modus laufen lassen
2. Prüfung, ob generierte Daten in Source Blöcken (Scope, To Workspace...) oder den Modellparametern überflüssig sind und speziell bei Speicherproblemen Teile dieser Daten herauszunehmen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
torben83
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 19.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2009, 15:40     Titel:
  Antworten mit Zitat      
Hallo Andreas,

vielen dank für deine schnelle Antwort. Also ich habe jetzt im Accelerator-Mode simuliert und konnte schon einen kleinen Erfolg verzeichnen. Da ich bei meiner Diplomarbeit aber mit einem anderen Programm co-simulieren muss, reicht das beschleunigen noch nicht aus. Meinem Betreuer ist es noch zu langsam, er hat allerdings auch nicht wirklich Ahnung von Matlab/Simulink und fordert. Insofern bleibt mir auch nur die Möglichkeit im Internet nach Möglichkeiten zu suchen, die die Rechenzeit beschleunigen. Was ich jetzt mehrfach gelesen habe ist die Möglichkeit mit der S-function. Jedoch habe hierzu noch nicht wirklich in der Hilfe gelesen.
Ich habe erstmal geschaut, dass ich irgendwie was auf Deutsch dazu finde, da mir langsam bei meiner DA die Zeit wegläuft, aber so richtig erfolgreich war ich dabei nicht. Nun habe ich keine andere Möglichkeit, es sei denn jemand kennt Literatur in dem die S-function in C code auch für Neulinge gut beschrieben ist.

Zudem habe ich gehört, dass es mal eine Demo-Toolbox mit reinen zeitdiskreten Blöcken gab. Existiert die noch? Weiß das jemand?

Vielen Dank für eure Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.