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

Veränderbare, als Matrix abspeicherbare Tabelle erstellen

 

Peter_43
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 24.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2008, 17:20     Titel: Veränderbare, als Matrix abspeicherbare Tabelle erstellen
  Antworten mit Zitat      
Hallo,
ich glaub es sollte nicht extrem schwierig sein, mein Problem zu lösen, aber ich finde es sehr schwer, etwas über das GUI rauszufinden.

Was ich gern hätte aber leider nicht zusammenbekomme:

ich möchte, dass ich in einer GUI mehrere Zahlen eingeben kann. Und diese Zahlen sollen, sobald ich einen pushbutton drücke, in Form von EINER 1-Zeilen(oder 1 Spalte; ist egal)-Matrix abgespeichert werden.
Also ich geb z.B. in der GUI die Zahlen 1,2,3,4,5 ein, dann drück ich auf 'GO' und erhalte daraus die Variable X=[1 2 3 4 5].
Ob ich jetzt die Zahlen in eine Tabelle, ein leeres Textfeld oder sonstwas eingebe ist mir egal.
Wichtig ist jedoch, dass die Menge an Zahlen variieren kann. Also dass nicht vorgeschrieben ist, dass exakt 5 Zahlen eingegeben werden.

Falls das jemand schaffen sollte und nicht allzu schwer ist würde ich die GUI gern folgendermaßen weiterschreiben:
diese Variable X soll dann durch einen pushbutton als .mat Datei abgespeichert werden. Das sollte ich selbst zusammenbekommen.
Aber was ich nicht weiß: mit einem 'Load' button würd ich eine alte .mat Datei gern wieder reinholen (bis jetzt kann ichs auch noch selbst) und dann in dieses Tabellenfeld reinladen. Und dann sollte es wieder editierbar sein, also dass ich noch weitere Zahlen anhängen kann.

Ich wäre sehr dankbar, falls mir einer weiterhelfen kann, auch wenns 'nur' bei einem Teil meines Problems ist.

Vielen Dank schonmal,
Peter
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 18.07.2008, 17:37     Titel:
  Antworten mit Zitat      
Moin Peter,

die Sachen, die du vorhast sind prinzipiell nicht schwierig.
Zu deinem ersten Problem:
In der Callback deines Pushbuttons schreibst du folgendes:
Code:
X = str2double(strrep(get(handles.editFeld,'String'),',',' '));

Ist allerdings ungetestet Rolling Eyes

Zu deinen weiteren Sorgen schau mal in die Skripte-Ecke. Dort habe ich etwas gepostet, was genau das macht, was du vorhast. Textfelder als .mat abspeichern, wieder laden und editierbar machen.
Klick!

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter_43
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 24.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2008, 11:50     Titel:
  Antworten mit Zitat      
Danke für die schnelle Hilfe,

also mit dem Befehl Daten rauslesen funktioniert ja sehr gut. Nur wie kann ich in einem edit-feld mehr Zahlen eingeben. Neue Zeile mit 'Enter' geht nicht und , oder einen Abstand erkennt er nicht -->X=NaN
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 21.07.2008, 12:18     Titel:
  Antworten mit Zitat      
Moin,

verdammt da hab ich mal wieder was vergessen Rolling Eyes

So geht das natürlich nicht ohne weiteres, sondern du musst Matlab ja noch sagen, dass dort mehrere Zahlen sein können. Das geht am besten mit
Code:
und würde dann so aussehen:
Code:
X = cell2mat(textscan(get(handles.editFeld,'String'),'%d','delimiter',' '));

So kannst du deine Zahlen durch Leerzeichen getrennt eingeben.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter_43
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 24.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2008, 12:05     Titel:
  Antworten mit Zitat      
Hallo,
herzlichen Dank für die Hilfe. Der Befehl geht einwandfrei. Ich hab noch ein double(X) dazugefügt, weil ich mit den Zahlen weiterrechnen will. Das geht auch sehr gut.

Nur mit dem Speichern und Laden hab ich noch meine Probleme. Ich hab versucht einen anderen Befehl zu verwenden als du angeboten hast, weil ich aussuchen will als was ich das speichern will.
Also hab ichs mit uisave bzw. uiload probiert. (gibts bei uiload auch die Möglichkeit, das 'Startverzeichnis' selbst zu bestimmen anstatt das 'Current directory' zu verwenden?)

Also die beiden buttons schauen bei mir so aus:

Code:
function push_datasave_Callback(hObject, eventdata, handles)
X = cell2mat(textscan(get(handles.edit1,'String'),'%d','delimiter',' '));
X=double(X);
uisave('X','C:\Daten\Daten.mat');


Code:
function push_dataload_Callback(hObject, eventdata, handles)
uiload;
X=X';
set(handles.edit_1,'String',num2str(X));



Nur leider funktioniert da irgendwas nicht. Er ladet zwar die gespeicherten Zahlen wieder rein, aber 1. verschwinden die Nachkommastellen und 2. kann ich mit den Zahlen nicht mehr weiterrechnen. Dann kommen Fehlermeldungen.

Hat jemand nochmals einen Rat? Smile

Danke
Peter
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 23.07.2008, 14:17     Titel:
  Antworten mit Zitat      
Peter_43 hat Folgendes geschrieben:

Also hab ichs mit uisave bzw. uiload probiert. (gibts bei uiload auch die Möglichkeit, das 'Startverzeichnis' selbst zu bestimmen anstatt das 'Current directory' zu verwenden?)

Ja, indem du dir das uiload selber baust:
Code:

mkdir test; % nur als Beispiel, damit wird im aktuellen Ordner ein Ordner "test" erstellt
load(uigetfile('*.mat','Select file',fullfile(pwd,'test')))


Peter_43 hat Folgendes geschrieben:

Code:
function push_datasave_Callback(hObject, eventdata, handles)
X = cell2mat(textscan(get(handles.edit1,'String'),'%d','delimiter',' '));
X=double(X);
uisave('X','C:\Daten\Daten.mat');


Code:
function push_dataload_Callback(hObject, eventdata, handles)
uiload;
X=X';
set(handles.edit_1,'String',num2str(X));



Nur leider funktioniert da irgendwas nicht. Er ladet zwar die gespeicherten Zahlen wieder rein, aber 1. verschwinden die Nachkommastellen und 2. kann ich mit den Zahlen nicht mehr weiterrechnen. Dann kommen Fehlermeldungen.

Eigentlich brauchst du das double(X) nicht, denn die werden ja schon als Zahl und nicht als string eingelesen...
Und eigentlich sollte es mit dem 2. Code bei dir klappen, mit dem Darstellen... Komisch!

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter_43
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 24.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2008, 16:24     Titel:
  Antworten mit Zitat      
Tut mir leid, wenn ich den alten thread nochmals hervorhole aber vll. kann ja doch noch einer helfen:
also ich bin draufgekommen, dass durch das Laden auf einmal 2 Leerzeichen zwischen den einzelnen Zahlen sind und das scheint ihn zu verwirren. Wenn ich die Leerzeichen dann manuell lösche, kann Matlab ganz normal damit rechnen.

Kann es sein, dass ich da Sachen wie
Code:
'String', 'delimiter',' ',...
weglassen muss?
Oder weil ich das für 2 Variablen/Textfelder gleichzeitig mach?

Danke nochmals,
Peter
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.10.2008, 16:30     Titel:
  Antworten mit Zitat      
Peter_43 hat Folgendes geschrieben:
also ich bin draufgekommen, dass durch das Laden auf einmal 2 Leerzeichen zwischen den einzelnen Zahlen sind und das scheint ihn zu verwirren
[...]
Kann es sein, dass ich da Sachen wie
Code:
'String', 'delimiter',' ',...
weglassen muss?


Ja, ich denke wenn du
Code:
...,'Delimiter',' ',...
weglässt, dann müsste TEXTSCAN automatisch die leeren Zeichen (egal wieviele) als Trenner nehmen.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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.