mein problem ist folgendes:
- die 100x100 matrix krige ich hin und kann sie verwenden
- die einzelnen werte (XRange und YRange) brauche ich auch noch, aber das klappt irgendwie nicht, ich kann die werte für XRange und YRange nicht verwenden.
Verfasst am: 11.11.2010, 17:01
Titel: Re: werte aus txt-datei einlesen
Hallo ms1080,
Zitat:
- die einzelnen werte (XRange und YRange) brauche ich auch noch, aber das klappt irgendwie nicht, ich kann die werte für XRange und YRange nicht verwenden.
In Deinem Code ist gar nicht zu sehen, wie Du versuchst XRange und YRange zu verwenden. Und "klappt irgendwie nicht" ist auch nicht genug um zu erahnen, wo das Problem liegen könnte.
Bitte beschreibe Dein Problem genauer. Fehlermeldungen? Unerwartete Werte?
habe mit sscanf noch nicht gearbeitet, aber es jetzt mal versucht, was aber auch nicht so geklappt hat wie ich es mir vorstellte. Ich erhalte einfach nicht die Werte, die ich gerne hätte.
Code:
% Einlesen vom Wafer
[txtfile,path2txt] = uigetfile('*.txt','Bitte Datei auswählen'); %Datei kann vom Nutzer selbst gewählt werden
fid = fopen(fullfile(path2txt,txtfile),'r');
laenge_x = fscanf(fid,'XRange=%f');
laenge_y = fscanf(fid,'XRange=%f');
rawdata1 = textscan(fid,'%f %f %f','headerlines',8); %Überschrift entfernen
data1 = rawdata1{3}; %nur die dritte Spalte einlesen
dataz = reshape(data1,10000,1); %Z-Vektor als Spaltenvektor von 1-10000 erzeugen
data1 = reshape(data1,100,100); %100x100 Matrix aus Vektor data erzeugen
fclose(fid);
%Aufteilung von 100 Messwerten auf jeweiliger Achse
%Beginn bei x=0 und y=0
das ist der von mir verwendete code. er ist grundlage meines gesamten gui. durch drücken eines buttons im gui öffnet sich ein windows typisches fenster um die datei auszuwählen. wenn ich die datei ausgewählt habe brauche ich die werte für XRange und YRange. dazu kommt noch die dritte spalte der unter der überschrift angegeben werte. das löse ich mit:
Code:
rawdata1 = textscan(fid,'%f %f %f','headerlines',8); %Überschrift entfernen
data1 = rawdata1{3}; %nur die dritte Spalte einlesen
dataz = reshape(data1,10000,1); %Z-Vektor als Spaltenvektor von 1-10000 erzeugen
data1 = reshape(data1,100,100); %100x100 Matrix aus Vektor data erzeugen
Du kannst es auch mit "FSCANF(FID, 'XRange=%f')" direkt versuchen, dann musst Du nur vorher per "dummy = fgetl(fid)" die verherigen 5 Zeilen einlesen - also überspringen.
Also warum erstellt du nochmal ein Thema mit genau der selben Frage, Ich habe dir genau beschrieben wie du es machen musst, aber am Ende gab es kein Feedback von Dir.
Dann lieber ein neues Thema erstellen, sorry aber das macht mich echt etwas wuetend...
Nur der Vollstaendigkeithalber hier mein code aus dem anderen Thread und die Loesung warum du die "values" nicht verwenden kannst. Die Values sind Cell-Arrays und das sind immer strings! Natuerlich muesstest du Sie um Sie als Zahlen weiterzuverarbeiten erst von String zu Zahl umwandeln (str2num)!
Code:
[txtfile,path2txt] = uigetfile('*.txt','Bitte Datei auswählen');
fid = fopen(fullfile(path2txt,txtfile),'r');
A = textscan(fid,'%s',2,'headerlines',5); % Einlesen der Zeile 6 und 7 (XRange, YRange) aus deinem File
values = regexp(A{1},'\d.\d*','match'); % Extraktion der Ziffern % Verwendung als Zahl str2num(values{1}{1})*5 str2num(values{2}{1})+4
ich denke mal hier ist die textscan zeile falsch, weil ich voher ja schon 5 zeilen ausschließe.
muss ich jetzt die nächsten 3 ausschließen? oder werden die zeilen von xrange und yrange nicht mehr betrachtet?
ich denke mal hier ist die textscan zeile falsch, weil ich voher ja schon 5 zeilen ausschließe.
muss ich jetzt die nächsten 3 ausschließen? oder werden die zeilen von xrange und yrange nicht mehr betrachtet?
Probieren geht ueber Studieren! Warum probierst du es denn nicht einfach selber mal aus und siehst was passiert, ehe du sofort wieder hier postest?
Denn das ist genau das Problem, du hasst 10 Zeilen im Header: erst uberspringen wir die ersten 5, lesen dann die naechsten beiden ein (X,YRange), so dass nun noch 3 Zeilen bis zu den eigentlichen Daten verbleiben!
So funktioniert es:
Code:
[txtfile,path2txt] = uigetfile('*.txt','Bitte Datei auswählen'); % Datei kann vom Nutzer selbst gewählt werden
fid = fopen(fullfile(path2txt,txtfile),'r');
A = textscan(fid,'%s',2,'headerlines',5); % Einlesen der Zeile 6 und 7 (XRange, YRange) aus deinem File
values = regexp(A{1},'\d.\d*','match'); % Extraktion der Ziffern
rawdata1 = textscan(fid,'%f %f %f','headerlines',3); % Überschrift entfernen
data1 = rawdata1{3}; % nur die dritte Spalte einlesen
dataz = reshape(data1,10000,1); % Z-Vektor als Spaltenvektor von 1-10000 erzeugen
data1 = reshape(data1,100,100); % 100x100 Matrix aus Vektor data erzeugen fclose(fid);
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
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.