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

GUI - standalone; .mat-files nicht kompilieren

 

Timmmo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2011, 15:20     Titel: GUI - standalone; .mat-files nicht kompilieren
  Antworten mit Zitat      
Hallo Zusammen!

Ich würd gern aus meinem GUI eine .exe basteln. Leider lese ich bereits berechnete daten aus .mat-files ein, die eine Gesamtgröße von über 1GB haben. Diese müsste ich ebenfalls mittels Deploytool mit in die .exe packen. Das Eregebnis ist eine rießige .exe die ewig braucht um zu starten.

Meine Frage: gibt es eine Möglichkeit die .exe ohne die .mat-files zu kompilieren und die .mat-files einfach in den selben Ordner wie die .exe zu legen?

Würd mich über Tips wie immer sehr freuen
Danke LG Timo


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.04.2011, 19:33     Titel:
  Antworten mit Zitat      
Hallo,

hast du's denn schon mal so ausprobiert?
Das einzige Problem, was ich mir dabei vorstellen könnte, ist, dass die EXE möglicherweise nicht im momentanen Verzeichnis ausgeführt wird. Ich würde also immer den Pfad mit einbauen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 25.04.2011, 21:33     Titel:
  Antworten mit Zitat      
Hey,

ja du kannst die Datei in den gleichen Ordner wie deine exe. Datei ablegen. Im Quellcode lädst du diese dann einfach mit load('DeineDatei.mat') (der Current Folder ist der indem die exe ist). Vll musst du dann noch ne Abfrage machen (if isdeploeyd) um den Pfad bei der Benutzung der Matlab Entwicklungsumgebung nutzen zu können.
Code:

if isdeployed
   load('DeineDatei.mat')
else
   load(fullfile)
end
 

Das Starten der exe-Datei kann schonmal 30 Sekunden dauern, weil eine abgespeckte Matlabvariente in den Arbeitsspeicher geladen wird.

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Timmmo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2011, 09:42     Titel:
  Antworten mit Zitat      
Hallo nochmal,

@Harald: Ja habs genau so getestet und die beschrieben lange ladezeit war das resultat.

@marco
Marco H. hat Folgendes geschrieben:

...Im Quellcode lädst du diese dann einfach mit load('DeineDatei.mat') (der Current Folder ist der indem die exe ist)...

hab' ich gerade getestet... lade meine daten abhängig von einer variablen folgendermaßen.
Code:

dateiname = sprintf(diff%03d.mat',var);
load (dateiname);

leider funktioniert das Ganze nicht wie gewünscht. Das Prog. bleibt genau an der Stelle hängen, an der das .mat file geladen wird. Scheint also nicht zu funktionieren wenn man einfach die files im selben Verzeichnis ablegt wie die exe. Oder muss ich schon beim Kompilieren irgendwas beachten??? Würd euch gern mehr Infos posten, aber ohne debugging leider nicht möglich.

Würd mich über weitere Tips freuen
Danke LG
 
Harald
Forum-Meister

Forum-Meister


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

"ewig" ist relativ. Es braucht einige Zeit, bis die MCR geladen ist. Man müsste das also mit einer "normalen" kompilierten Anwendung vergleichen.

Wie schon gesagt empfehle ich, bei der MAT-Datei den vollständigen Pfad anzugeben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 26.04.2011, 10:01     Titel:
  Antworten mit Zitat      
Hey,

also das muss funktionieren. Ich mache das nämlich schon seit längerem so (auf verschiedensten PCs). Ich benutze dafür die Version 2010a. Zudem erscheint, wenn du z.B. uiputfile benutzt und keinen Pfad angibst der Ordner indem du die exe hast. Das ist auch noch ein Indiz dafür, dass es der Current Path ist. Zudem kannst du ja die console mitlaufen lassen, da wird dir angezeigt was für eine Fehlermeldung sich ergeben hat. Was steht denn da (in 2011a gibs sogar eine msgbox die deine Fehler anzeigt, da brauchst du die Console angeblich nicht mehr )?
@Harrald
Zitat:

Wie schon gesagt empfehle ich, bei der MAT-Datei den vollständigen Pfad anzugeben

Es ist durchaus nicht so einfach den kompletten Pfad anzugeben, denn besonders wenn eine Anwendung auf verschiedenen Betriebssystem laufen soll (z.B. XP Win7) welche ja unterschiedliche Ordnernamen haben. Hier müsste man dann mit Systemvariablen arbeiten. Beispiel (Programme (x86) Win7 64 Bit, und Programme unter XP). Hier müsste man wieder verschiedene Fälle betrachten, die man sich Sparen kann, wenn man weiß, dass der Pfad der exe = dem Current Path entspricht.
Aber Prinzipell hast du recht...

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Timmo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2011, 10:44     Titel:
  Antworten mit Zitat      
Marco H. hat Folgendes geschrieben:
Hey,
Zudem kannst du ja die console mitlaufen lassen, da wird dir angezeigt was für eine Fehlermeldung sich ergeben hat. Was steht denn da (in 2011a gibs sogar eine msgbox die deine Fehler anzeigt, da brauchst du die Console angeblich nicht mehr )?

Vielleicht ne blöde Frage... aber wie lasse ich die Konsole mitlaufen?
Marco H. hat Folgendes geschrieben:

Es ist durchaus nicht so einfach den kompletten Pfad anzugeben, denn besonders wenn eine Anwendung auf verschiedenen Betriebssystem laufen soll (z.B. XP Win7) welche ja unterschiedliche Ordnernamen haben. Hier müsste man dann mit Systemvariablen arbeiten. Beispiel (Programme (x86) Win7 64 Bit, und Programme unter XP). Hier müsste man wieder verschiedene Fälle betrachten, die man sich Sparen kann, wenn man weiß, dass der Pfad der exe = dem Current Path entspricht.

Genau deshalb wollte ich eine komplette Pfadangabe vermeiden

Danke euch beiden!
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 26.04.2011, 11:18     Titel:
  Antworten mit Zitat      
Hey,

wie Kompilierst du denn? Ich benutze standardmäßig das deploytool. Da müsste es die Defaulteinstellung sein.

Du kannst natürlich folgendes ausprobieren. Packe auf deinem Rechner alle nötigen Files in den Ordner der exe Datei. Dann gibst du im Quellcode genau den Pfad der mat-Files an die in dem Ordner der exe Datei liegen. Dann startest du das Programm über das Matlab Kommandwindow (also das M-File). Es kann natürlich sein, dass du bei so einer Masse von Daten etwas vergessen hast (alternativ benuzte addpath, allerding musst du dabei auch eine Abfrage machen if isdeployed).

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Timmmo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2011, 13:25     Titel:
  Antworten mit Zitat      
Spannend Spannend...

hab' alles noch mal neu kompiliert meinen Rechner auch neu gestartet und siehe da... es funktioniert jetzt... warum ist mir nicht ganz klar, aber hauptsache es läuft jetzt.

Vielen Dank noch mal für eure Zeit
LG
 
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.