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

m.File erzeugen und speichern

 

Ascobol
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2010, 19:52     Titel: m.File erzeugen und speichern
  Antworten mit Zitat      
Hallo,

ich habe mehr ein Verständnisproblem. Also es geht um folgendes:

In einem Matlab Gui werden Angaben vom Benutzer abgefragt, z.B.
Wieviel Brötchen wollen Sie kaufen? und er Trägt dann ne Zahl ein, 3
Die Zahl hat die Variable Br_Anzahl

Im .m File zum Gui soll danneine kleine Berechnung vorgenommen werden, z.B,.
Preis = 0.21 * Br_Anzahl

Dann soll ein neues m.File aufgerufen oder geschrieben werden, in dem diese Zahl drinsteht.

Also Preis = 0.63

m.File ende, Speichern des neuen Files

Und ich habe keine Ahnung wir ich quasi dieses Neue m.File mit den Ergebnissen oder den aus dem GUI eingelesenen Werten erzeugen kann.

Ich habe schon an fprintf oder save oder saveas gedacht, aber damit würde ich ja nur die Formel Preis = 0.21 * Br_Anzahl drin stehen und nicht das Ergebnis, oder?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

du kannst in fprintf ja die Variable Preis verwenden. Für die Datei wird dann er aktuelle Wert von Preis verwendet. Sollte also kein Problem sein.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2010, 21:44     Titel:
  Antworten mit Zitat      
Jein, alsi ich will ja nicht mit preis weiterrechnen, sondern dass richtig "preis = 5" dasteht. Also nicht dass er das intern im Speicher irgendwo kennt und damit rechnen kann, sondern dass ers hinschreibt.

Oder steh ich aufn Schlauch und das geht auch mit fprintf?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.01.2010, 23:23     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich die Frage richtig verstehe, stehst du auf dem Schlauch. Als Beispiel Bildschirmausgabe mit fprintf:

Code:
Preis = 4;
fprintf('Preis = %f \n', Preis)


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2010, 00:18     Titel:
  Antworten mit Zitat      
Das klingt natürlich sinnvoll. Probier ich mal aus, Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Ascobol
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2010, 19:30     Titel:
  Antworten mit Zitat      
Hallo,

ich habe das soweit ausprobiert und das klappt auch recht gut.
Ich kann mir meine Werte vom Gui auf den Bildschirm ausgeben lassen. Dann habe ich mir eine test Datei geschrieben, Wo Werte in ein anderes txt oder m-file gespeichert werden sollen.

Code:
function write_file()
filename='test.txt';
fid=fopen(filename,'w');
tline=1234
fprintf(fid,'Wert = %f \n',tline);
fclose fid
f


und Füge ich diesen Code ähnlich in mein m-file vom Gui ein, und zwar kurz vor dem Callback für mein Fenster schließen Button.

Code:
function write_file()
filename='test.txt';
fid=fopen(filename,'w');
fprintf(fid,'Wert = %f \n',Preis);
fclose fid
 


So, nun zum Problem: In dem oberen Test-file erzeugt er mir prav diese Test.txt mit Wert=1234 drin. Wennich Text.m haben möchte gehts auch.

In dem unteren, wenn der Code im Gui-m-file ist, erzeugt er mir keine solche Datei. Es erfolgt auch keine Fehlermeldung o.ä.

Woran könnte das liegen?
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Vermutung: die Datei war aufgrund eines Fehlers beim Schließen noch geöffnet und konnte dadurch nicht noch einmal zum Schreiben geöffnet werden. Es muss heissen:
Code:


Ansonsten kann ich mir nur vorstellen, dass du in einem anderen Verzeichnis als vermutet bist.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2010, 18:27     Titel:
  Antworten mit Zitat      
Danke, damit hat es jetzt relativ gut geklappt. ich habe den Code jetzt in den Callback meines Beenden Buttons gepackt und die Klammer eingefügt und function write_file() weggelassen.

Nur besteht leider immer noch ein Problem, welches ich einfach nicht behoben bekomme

wenn ich folgenden code teste, wird Wert=1234 korrekt in test.txt reingeschrieben

Code:
function beenden_Callback(hObject, eventdata, handles)
close %schließt gui
filename='test.txt';
fid=fopen(filename,'w');
tline=1234
fprintf(fid,'Wert = %f \n',tline);
fclose fid


Allerdings heißt das ja, dass ich einen festen Wert habe. Nun will ich aber meinen errechneten Preis in dem neuen file haben und verwende:

Code:
function beenden_Callback(hObject, eventdata, handles)
close %schließt gui
filename='test.txt';
fid=fopen(filename,'w');
fprintf(fid,'Wert = %f \n',Preis);
fclose fid


Nun kommt die Fehlermeldung Undefined function or variable 'Preis'.
Und das kapier ich einfach nicht. ich verwende doch die Variable schon und kann sie mir auch per printf auf den Bildschirm ausgeben lassen.
Muss ich denn irgendwie sagen dass es eine globale variable sein soll??[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.01.2010, 20:14     Titel:
  Antworten mit Zitat      
Hallo,

in MATLAB sind alle Variablen lokal zu einem Workspace gehörig. Wenn der Callback vollständig ist, wird die Variable Preis dort nicht definiert und ist damit nicht bekannt. Der beste Weg ist nicht, globale Variablen zu verwenden, sondern Preis z.B. aus einem Textfeld auszulesen (was natürlich heisst, dass man die GUI erst danach schließen sollte). Alternative: Preis in der Userdata eines Objekts abspeichern.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2010, 20:24     Titel:
  Antworten mit Zitat      
Zitat:
Der beste Weg ist nicht, globale Variablen zu verwenden, sondern Preis z.B. aus einem Textfeld auszulesen


Aber wenn ich Preis berechne, kann ich es ja nicht auslesen.

Zitat:
Alternative: Preis in der Userdata eines Objekts abspeichern.

Wie mach ich das denn??? ich lese bis jetzt die dinge mitget(hObject....
oder get(handles.Br_Anzahl....
aus.
Muss ich da was anderes hinschreiben?

Oder in die jeweilige function selbst?
Ich such mal nebenbei im forum, vllt find ich ja was dazu^^
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.01.2010, 20:28     Titel:
  Antworten mit Zitat      
Hallo,

deswegen sage ich ja: Preis nach Berechnung z.B. in Userdata abspeichern.

Code:
set(handles.WeissDerGeier, 'UserData', Preis)


... und wenn du ihn wieder brauchst:
Code:
Preis = get(handles.WeissDerGeier, 'UserData');


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2010, 20:29     Titel:
  Antworten mit Zitat      
Also ich hab ne Idee:

get(handles.Br_Anzahl,'userdata')

Damit hab ich ja schonmal den Ausgelesenen wert. Nur wie setzt ich jetzt den Preis auf userdata?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.01.2010, 20:51     Titel:
  Antworten mit Zitat      
Siehe Kommentar zuvor.

Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ascobol
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2010, 21:47     Titel:
  Antworten mit Zitat      
ui, der war noch nicht da als ich schrieb, du bist zu schnell^^

Riesen Danknatürlich, bist mein heimlicher Held
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 - 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.