Verfasst am: 09.02.2008, 13:45
Titel: Einlesen einer *.xls
Hallo,
ich weiß, dass dieses Thema sicher schon hundert mal behandelt wurde, aber ich komm einfach nicht weiter....
Ich muss einfach Zahlen aus einem .xls flie einlesen... Zur Zeit besteht das file nur aus einer Spalte. So hab ich mir das mal gedacht, aber da gibt er nur Misst aus...
Schön wäre es, wenn ich z.B. sagen könnte, es sollen Werte "von bis" eingelesen werden... z.B. wenn der erste Wert positiv ist, bis zum letzten positiven Wert...
Hallo Philipp, mit fread kommst nur Du nur weiter wenn deine Daten als ascii vorliegen. Schau Dir mal die FUnktion xlsread an, damit lassen sich auch xls Dateien einlesen.
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Philipp
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.02.2008, 12:48
Titel:
Danke Michaela!
Das Einlesen mit xlsread hat funktioniert, aber ich kann die Daten dann nicht weiter bearbeiten. Ich habe es jetzt einmal so probiert:
und da ist dann das Problem, dass in der Schleife die Variable weiter den "richtigen" wert hat, also z.B. 2, und ausgegeben wird aber 50. Keine Ahnung wieso... Mach ich da grundsätzlich etwas falsch? Ich bin MATLAB-Anfänger, also bei mir darf man nichts voraussetzen
Vielen Dank,
Philipp
P.S.: Wenn die Daten dabei als ASCII vorliegen müssen, ist das kein Problem...
wiso sollte man die Daten dann nicht weiterverarbeiten können ?????
Nur mal so neugierdehalber gefragt.
_________________
Mit freundlcihem Gruß
Nyquist
Philipp
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.02.2008, 11:58
Titel:
Hallo Nyquist,
ja wahrscheinlich kann man die Daten, nachdem man sie mit xlsread eingelesen hat, eh weiter verarbeiten, aber ich weiß halt nicht wie... ich muss die Daten dann Zeile für Zeile durchgehen lassen, und das geht meines Wissens nach nur mit fgetl(fid)... aber ich lass mich gerne belehren
schick doch mal bitte den Code und was du nach dem auslesen an Daten erhälst
_________________
Mit freundlcihem Gruß
Nyquist
Philipp
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.02.2008, 12:07
Titel:
also ich habe es bis jetzt so gelöst:
das Problem ist nur, dass aus dem .csv file nur die erste Spalte (A) ausgelesen wird... ich bräuchte allerdings zwei Spalten...
Code:
function xls () ifnargin < 1,
%Öffnet das verzeichnis in dem man sich gerade befindet (current
%Directory), hat den namen 'Open Excel-files' und zeigt nur *.csv-files
%an
[f,p] = uigetfile('*.csv','Open Excel-files');
fn = [p f];
end
if f ~=0
fid=fopen(fn,'r');
n=1;
format long;
weiter =-1;
while weiter <5
str = fgetl(fid);
if str<0 break end
zn = sscanf(str,'%f');
weiter = zn;
if weiter >=5
xls(n,1)=zn
weiter=0;
n=n+1;
end end
anfügen. Wenn so geht ist es in Ordnung
_________________
Mit freundlcihem Gruß
Nyquist
Philipp
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.02.2008, 13:18
Titel:
danke, aber das braucht man meiner Meinung nach nicht machen, weil fgetl(fid) die erste Zeile holt, und bei nächsten Durchgang springt fid in die zweite Zeile... u.s.w.
aber danke fürs durchschauen...
mein Problem ist jetzt, dass eben nur die Werte aus der ersten Spalte (A) genommen werden, nich aber aus der Spalte B z.B. ...
Hast du da eine Ahnung, wie das gehen könnte?
uups ja stimmt hab übersehen das die while das erledigt.
Ja dann hast du jetzt jede Zeile als Vektor in str, str2, etc. gespeichert.
du kannst dann Spalte A über str(1) und Büber str(2) rausholen. weß jetzt nicht ob die Zahlen stimmen aber es ist nichts anderes als ein Zugriff auf ein Vektor. geh das doch mal im CommandWindow Stück für Stück durch und schau dir an wie du da genau drauf zugreifen kannst.
_________________
Mit freundlcihem Gruß
Nyquist
Philipp
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.02.2008, 15:26
Titel:
Ok, ich probier das einmal... falls ich noch fragen habe, melde ich mich wieder
dann schau Dir doch mal csvread und dlmread an - das sollte dir beides weiterhelfen...
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Philipp
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.02.2008, 01:47
Titel:
Vielen Dank nochmal ihr zwei!!!
ich hab das Problem in dem gelöst, dass ich mir einfach Matlab 7.0 installiert habe und das ganze Speicherproblem mit xlswrite gelöst habe...
und da bin ich nun beim nächsten Problem... Ich habe eine Variable, die aus 6 Spalten und x-Zeilen besteht und ich habe sie über xlswrite als *.xls file gespeichert. Das Problem dabei ist, dass ich keinen Header habe... kann ich den noch irgendwie einfügen? weil der Header ist ja string und die Variable ist num... Geht das überhaupt?
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.