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 Projekt in Funktionierende EXE umwandeln mcc

 

Mardin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 13:26     Titel: Matlab Projekt in Funktionierende EXE umwandeln mcc
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.07.2012, 13:51     Titel:
  Antworten mit Zitat      
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
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mardin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 15:09     Titel:
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.07.2012, 15:40     Titel:
  Antworten mit Zitat      
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:
Code:

Damit wird der Zufallszahlengenerator über die Systemzeit initialisiert, die ja bei jedem Durchlauf eine andere ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mardin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 08:38     Titel:
  Antworten mit Zitat      
Hallo,

Ich habe mal Versucht:
Code:

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

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.07.2012, 09:32     Titel:
  Antworten mit Zitat      
Hallo,

du verwendest vermutlich eine ältere Version als 2011a. Erst dort wurde die Funktion RNG zur Vereinfachung eingeführt. Alternativ kannst du folgendes verwenden:
Code:
RandStream.setDefaultStream(RandStream('mt19937ar','seed',sum(100*clock)));


Bitte bei den Beiträgen immer angeben, wenn man mit einem älteren Release arbeitet, damit das berücksichtigt werden kann.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mardin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 09:50     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für die spitzen hilfe! Hat super geklappt jetz bekomme ich immer andere Werte heraus.

Noch eine kleine Frage Wink . 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
 
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 - 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.