2016-10-11 4 views
0

Ich entwickle eine Benutzeroberfläche mit Matlab, die ermöglicht, eine Textdatei zu durchsuchen und zu laden und einige Kurven anzuzeigen. Ich stehe vor einem Problem, mein Dateitext ist eine Dezimalzahl, Matlab liest diese Zahl als zwei Spalten. ist dies ein exemple: u hier um die Datei finden, die an dem ich arbeite:Dezimalzahl mit GUI lesen matlab

enter image description here

Nach diesen Code runing:

sieht
[filename pathname] = uigetfile({'*.txt'},'File Selector'); 
fullpathname = strcat(pathname,filename); 
text = fileread(fullpathname); %reading information inside a file 
set(handles.text6,'string',fullpathname)%showing full path name 
set(handles.text7,'string',text)%showing information 
loaddata = fullfile(pathname,filename); 
xy = load(loaddata,'-ascii','%s'); 
t = xy(:,1); 
i = xy(:,3); 
handles.input1 = i; 
handles.input2 = t; 
axes(handles.axes1); 
plot(handles.input1,handles.input2) 

die Kurven so strenge, so überprüfte ich das Ergebnis xy = load (loaddata, '- ascii') mit Hilfe des Befehlsfensters und hier erscheint das Problem!

enter image description here

So habe ich jetzt 12 Spalten anstelle von 6! kannst du mir bitte helfen? Ich versuchte mit strrep (Daten, ',', '.'), Aber es funktioniert nicht!

+1

Also ist Ihre Frage über das Parsen der Datei? Wie wäre es, wenn Sie den Inhalt der * tatsächlichen * Datei veröffentlichen und nur die relevanten Codezeilen anzeigen. Das hat nichts mit einer GUI zu tun. – Suever

+0

Hallo, ich habe meine Frage jetzt bearbeitet, um sie klarer zu machen. Du kannst sie überprüfen :) –

+0

Kannst du die tatsächlichen Daten in die Frage einfügen, anstatt einen Screenshot zu posten? – Suever

Antwort

0

Da Sie Kommas, für Ihre radix Punkt verwenden, werden Sie in der gesamten Datei als String erste Last, die , mit . ersetzen und dann können Sie str2num verwenden, um die gesamte Datei in ein numerisches Array zu konvertieren

% Read the entire file into memory 
fid = fopen(loaddata, 'rb'); 
contents = fread(fid, '*char')'; 
fclose(fid); 

% Replace `,` with `.` 
contents = strrep(contents, ',', '.'); 

% Now convert to numbers 
data = str2num(contents); 
+0

@EmnaAemeur Wenn das funktioniert hat für Sie, markieren Sie es als eine Lösung – Suever