|
|
Matlab Projekt in Funktionierende EXE umwandeln mcc |
|
Mardin |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.07.2012, 13:26
Titel: Matlab Projekt in Funktionierende EXE umwandeln mcc
|
 |
|
 |
|
Hallo,
Ich habe ein kleines Matlab Programm geschrieben das während es läuft 2 andere Funktionen aufruft die sich beide zusätzlich als .m file im Ordner befinden.
So nun möchte ich das Programm gerne als ausführbare .exe datei haben mit C-Code der dazugehört. Ich habe nun schon ein wenig mit der matlab Funktion mcc rumgespielt und mein Prorgramm als exe hinbekommen:
mcc -m meinprogramm
So wenn ich nun diese Exe starte funktioniert diese auch nur ich erhalte immer wieder die gleichen Werte als Endergebniss meines Programms ausgegeben was nicht sein kann diese Werte müssten sich minimal unterscheiden.
Meine Vermutung ist das die Exe einfach nur ein gespeicherter funktionierender Betriebsfall ist der abgespielt wird. Genau das möchte ich nicht ich möchte das die .exe genau das macht was Matlab macht und zwar jedesmal alles neu berechnen.
Außerdem verstehe ich nicht genau wie ich die 2 Funktionen die aufgerufen werden mit einbinden kann muss ich die irgendwie auch mit mcc verarbeiten damit die exe diese aufrufen kann?
Grüße,
Mardin
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 10.07.2012, 13:51
Titel:
|
 |
Hallo,
Das Programm wird immer neu ausgeführt.
Warum sollten sich die Endergebnisse unterscheiden? Werden etwa (Pseudo-) Zufallszahlen erzeugt?
Der Compiler führt automatisch eine Abhängigkeitsanalyse durch.
Wenn man der Abhängigkeiten hat, die nicht automatisch erkannt werden, oder das Kompilieren aus einem anderen Grund komplizierter wird, empfehle ich die Verwendung von
Grüße,
Harald
|
|
|
Mardin |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.07.2012, 15:09
Titel:
|
 |
Hallo Harald,
danke für die schnelle Antwort.
Also in dem Programm läuft eine Simulation in der teilweise zufällige Werte genutzt werden deshalb müssen sich die Ergebnisse am Ende unterscheiden was in Matlab auch immer der Fall ist. Mit der .exe erhalte ich bei jedem Aufruf exakt die selben Ergebnisse als wären sie abgespeichert irgendwo und er ruft sie nur auf.
Ich denke das liegt daran das die anderen beiden m files die er aufruft irgendwie auch mit in die exe gepackt werden müssen ich verstehe nur noch nciht so ganz wie ich eine applikation erstelle mit mcc die alle 3 m files zusammen zu einer .exe fasst.
Das deploytool werde ich mir direkt mal ansehen.
Grüße,
Mardin
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 10.07.2012, 15:40
Titel:
|
 |
Hallo,
das Problem sehe ich eher darin, dass Zufallszahlen eben nicht zufällig sind, sondern nach einem bestimmten Muster erzeugt werden.
Bei jedem Start der .EXE wird die MATLAB Compiler Runtime (MCR) und damit auch der Zufallszahlengenerator neu initialisiert, und damit bekommst du dieselben Zufallszahlen.
Vorschlag: am Anfang der ersten Funktion folgende Zeile einbauen:
Damit wird der Zufallszahlengenerator über die Systemzeit initialisiert, die ja bei jedem Durchlauf eine andere ist.
Grüße,
Harald
|
|
|
Mardin |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.07.2012, 08:38
Titel:
|
 |
Hallo,
Ich habe mal Versucht:
einzubauen in mein Programm erhalte dabei aber folgende fehlermeldung:
??? Undefined function or method 'rng' for input arguments of type 'char'.
Error in ==> Netzimpedanz_Simulation at 27
rng('shuffle')
was mache ich flasch?
Grüße,
Mardin
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.07.2012, 09:32
Titel:
|
 |
Hallo,
du verwendest vermutlich eine ältere Version als 2011a. Erst dort wurde die Funktion RNG zur Vereinfachung eingeführt. Alternativ kannst du folgendes verwenden:
Bitte bei den Beiträgen immer angeben, wenn man mit einem älteren Release arbeitet, damit das berücksichtigt werden kann.
Grüße,
Harald
|
|
|
Mardin |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.07.2012, 09:50
Titel:
|
 |
Hallo Harald,
Danke für die spitzen hilfe! Hat super geklappt jetz bekomme ich immer andere Werte heraus.
Noch eine kleine Frage . Kann ich mit den 3 C files die mit erstellt werden etwas anfangen? So das ich z.B. auch ohne die exe mit einem C compiler das programm ausführen kann mit den 3 C files?
Grüße,
Mardin
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|