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: csv Tabelle eingeben und einlesen

 

tony742

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2015, 08:47     Titel: GUI: csv Tabelle eingeben und einlesen
  Antworten mit Zitat      
Hallöchen allerseits,

Ich würde gerne eine GUI bauen mit einem Eingabefeld, in das ich dann eine .csv Datei eingebe (Welche sich mit dem Ordner der Funktionen befindet).

In der .csv Datei stehen die Simulation Punkte mit denen eine andere Funktion dann rechnen soll.

Wie kann ich am besten das Einlesen der csv Datei realiseren?

Das sind nicht sonderlich viele Informationen, aber ich weiß nicht wie ich es besser beschreiben soll Laughing falls Ihr noch mehr Infos braucht fragt ruhig!

Vielen Dank schon mal für die Hilfe!

Gruß, tony


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.06.2015, 09:06     Titel:
  Antworten mit Zitat      
was hast du den bis jetzt versucht?
du nimmst halt den den dateinamen aus dem eingabefeld (get) und machst dann textscan oder csvread oder xlsread oder dlmread oder irgendsowas. Smile
was klappt denn nicht? einen guten anhaltspunkt, für benötigte informationen, bietet der thread aus meiner signatur.
grüsse winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
tony742

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2015, 09:41     Titel:
  Antworten mit Zitat      
Bisher habe ich es so versucht, ohne Erfolg Confused ^^

Das ist mein Main file
Code:

% --- Executes on button press in solve.
function solve_Callback(hObject, eventdata, handles)
% hObject    handle to solve (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
test_start_2_csv;
create_num_02 (a, b, c, hObject, handles)
 


Skript und Funktion:

test_start_2_csv
Code:

d = get(handles.d,'String');
data = csvread(d,';');

a = str2num(data(1,1));
b = str2num(data(1,2));
c = str2num(data(1,3));
 


create_num_02 (a, b, c, hObject, handles)
Code:

function create_num_02 (a, b, c, hObject, handles)

y = num2str(c/b);
slope = num2str(-a/b);
set (handles.y,'String',y);
set (handles.slope,'String',slope);
x=0:10;
y= c/b -a/b*x;
axes(handles.axes1);
plot(x,y);
xlabel('x');
ylabel('xyx2');
guidata(hObject,handles);

end
 


'd' ist der Tag vom Eingabefeld in das ich dann meine csv hineinschreibe (siehe Anhang).

test_gui_14_csv.png
 Beschreibung:

Download
 Dateiname:  test_gui_14_csv.png
 Dateigröße:  35.5 KB
 Heruntergeladen:  363 mal
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.06.2015, 10:14     Titel:
  Antworten mit Zitat      
Zitat:
Bisher habe ich es so versucht, ohne Erfolg Confused ^^

das ist leider keine ausführliche fehlerbeschriebung. was heist "ohne erfolg" welche fehlermeldungen treten auf. wie weicht das ergebniss vom gewünschten ab?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
tony742

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2015, 10:28     Titel:
  Antworten mit Zitat      
Ja Entschuldigung das habe ich vergessen zu sagen.

In einer früheren Version hatte ein 3 Eingabefelder a, b und c.

Und nachdem ich auf den "solve-button" geklickt habe lief alles durch und das Ergebnis wurde in dem Diagramm angezeigt.

Diese 3 Felder wollte ich durch eins ersetzen in das ich dann die csv Datei eingebe in der die Werte von a, b und c stehen.

Das heißt normalerweise sollte jetzt genau das selbe Ergebnis wie vorher herauskommen, aber wenn ich jetzt auf den "solve-button" klicke passiert leider nichts, keine Reaktion seitens des Programms(auch keine Fehlermeldung).

Deshalb vermute ich das etwas beim einlesen

Code:

d = get(handles.d,'String');
data = csvread(d,';');

a = str2num(data(1,1));
b = str2num(data(1,2));
c = str2num(data(1,3));
 


also hier, falsch programmiert ist.

Wie gesagt 'd' ist der Tag des Eingabefeldes, in das ich dann meine .csv Datei hineinschreibe.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.06.2015, 10:38     Titel:
  Antworten mit Zitat      
den debugger reinsetzen und gucken was da passiert.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
tony742

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2015, 12:27     Titel:
  Antworten mit Zitat      
Der Fehler liegt in "test_start_2_csv;"

Code:

d = (get(handles.d,'String'));
m = csvread(d,0:end,0:end);

a = str2num(m(1,1));
b = str2num(m(1,2));
c = str2num(m(1,3));
 


Mit der Fehlermeldung:

Code:

Error using csvread (line 26)
Not enough input arguments.

Error in test_start_2_csv (line 4)
m = csvread(d,0:end,0:end);  %%% data = csvread(d,';');

Error in untitled3_csv>solve_Callback (line 95)
test_start_2_csv;

Error in gui_mainfcn (line 96)
        feval(varargin{:});

Error in untitled3_csv (line 42)
    gui_mainfcn(gui_State, varargin{:});

Error in @(hObject,eventdata)untitled3_csv('solve_Callback',hObject,eventdata,guidata(hObject))

 
Error while evaluating uicontrol Callback
 


Ich habe es auch mit jeweils einer der folgenden Versionen probiert, die Fehlermeldung war aber immer die selbe.

Code:

m = csvread(d,';');
m = csvread(d,';',0:end,0:end);
m = csvread(d);
 


Stimmt etwas mit der Syntax nicht?
Weil laut der help-function müsste eigentlich mindestens eine dieser m = ... Versionen richtig sein (wenn nicht sogar alle).

Die Variable "d" steht auch bei mir im Workspace richtig drin, daran kann es nicht liegen.

Ich hoffe du kannst mir weiterhelfen Wink
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.06.2015, 12:49     Titel:
  Antworten mit Zitat      
die ersten beiden versionen entsprechen nicht der syntax der documentation.
0:end macht meiner meinung nach keinen sinn da end kein befehl ist der sich auf ein array in einem cell file beziht meiner meinung nach.
einen delimiter kann man bei csvread ebenfalls nicht übergeben.
die letzte version ist soweit richtig. kann mir nur vorstellen das dann d nicht richtig ist.
versuch mal
Code:

p.s. ich würde eh eher uigetfile benutzen anstatt so ein eingabe fenster. das kann man dann mit dem pushbutton verbinden und spaart sich so ein edit feld.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
tony742

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2015, 14:08     Titel:
  Antworten mit Zitat      
Danke für den Tipp mit uigetfile , das ist viel besser und schließt schon mal eine Fehlerquelle aus ( man kann sich beim Dateinamen nicht mehr vertippen Wink )

mit
Code:


kam leider genau die selbe Fehlermeldung Crying or Very sad

Ich versuche es jetzt aber anders, nämlich:
Code:

% --- Executes on button press in load.
function load_Callback(hObject, eventdata, handles)

[FileName,PathName] = uigetfile('*.csv','Select the CSV-File to Plot');  %GUI um Datei auszuwählen
fileAndPath=[PathName FileName];  
m =csvread(fileAndPath, ';');    

% --- Executes on button press in solve.
function solve_Callback(m, hObject, eventdata, handles)

create_abc (m);
create_num_02 (a, b, c, hObject, handles)
 


mit create_abc (m)
Code:

function create_abc (m)
a = m(1);
b = m(2);
c = m(3);
end
 

und create_num_2 wie vorher.

Damit bekomme ich die Fehlermeldung:
Code:

Index exceeds matrix dimensions.

Error in create_abc (line 4)
b = m(2);

Error in untitled3_b_csv>solve_Callback (line 95)
create_abc (m);
 


Und ich sehe auch im Workspace, dass m = 179.0132 ist.
Obwohl meine csv Datei nur aus 3 Werten besteht (s. Anhang)

m sollte eigentlich eine 1x3 Matrix sein [4 5 6].
Ist das einlesen mit uigetfile falsch? bzw kann man damit keine Matrizen einlesen?

csvdatei.png
 Beschreibung:

Download
 Dateiname:  csvdatei.png
 Dateigröße:  97.31 KB
 Heruntergeladen:  415 mal
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 16.06.2015, 14:34     Titel:
  Antworten mit Zitat      
anstatt eine photo der csv datei anzuhängen wäre es viel sinnvoller die csvdatei anzuhängen.
Zitat:
fileAndPath=[PathName FileName];

das siht mir nicht nach gültiger syntax für einen dateinamen aus.
guck dir mal
Code:
an
Zitat:
Code:
m =csvread(fileAndPath, ';')
;

ich habe oben bereits geschrieben das csvread keinen eingabeparameter für den delimiter hat. wäre ja auch sinnfrei. csv steht für comma seperated value. wenn du also eine csv file hast indem kein komma benutzt wird sondern ein semikolon geht csv natürlich nicht weil es keine csv datei ist. ich hatte dir deshalb auch textscan oder xlsread vorgeschlagen.
_________________

richtig Fragen
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.