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

Einlesen einer *.xls

 

Philipp

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2008, 13:45     Titel: Einlesen einer *.xls
  Antworten mit Zitat      
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...
Code:

function openfile (fn)
[f,p]=uigetfile ('*.*');
fn = [p f];
fid = fopen (fn,'r');
data = fread(fid);
fclose(fid);
data
end
 


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

kann mir da wer helfen??

Vielen Dank


Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 09.02.2008, 14:33     Titel:
  Antworten mit Zitat      
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.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2008, 12:48     Titel:
  Antworten mit Zitat      
Danke Michaela!
Das Einlesen mit xlsread hat funktioniert, aber ich kann die Daten dann nicht weiter bearbeiten. Ich habe es jetzt einmal so probiert:
Code:

fid = fopen ('zahlen.txt','r');

weiter=1;
while (weiter>0)
   
    a=fgetl(fid);
    weiter=a;
    if weiter <0
        break
    end
    fprintf('%f \n',weiter);
end
 

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 Wink

Vielen Dank,
Philipp
P.S.: Wenn die Daten dabei als ASCII vorliegen müssen, ist das kein Problem...
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 11.02.2008, 08:17     Titel:
  Antworten mit Zitat      
Hallo Phillip,

wiso sollte man die Daten dann nicht weiterverarbeiten können ?????
Nur mal so neugierdehalber gefragt.
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2008, 11:58     Titel:
  Antworten mit Zitat      
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 Wink

MfG,
Philipp
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 11.02.2008, 12:02     Titel:
  Antworten mit Zitat      
schick doch mal bitte den Code und was du nach dem auslesen an Daten erhälst
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2008, 12:07     Titel:
  Antworten mit Zitat      
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 ()
if nargin < 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
   
       
end
[fi,pa]=uiputfile('*.csv', 'Speichern unter...');
if isequal(fi,0) | isequal(pa,0)
       disp('User pressed cancel')
    else
       disp(['User selected ', fullfile(pa, fi)])
    end
dlmwrite (fi,xls,'%f');
 


vielleicht kann man das ganze ja überhaupt anders lösen!?
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 11.02.2008, 12:58     Titel:
  Antworten mit Zitat      
sers was mir aufgefallen ist

mit
Code:


holst du nur die erste Zeile aus deinem File, wenn du mehr willst solltest du anschließende

Code:


str2 = fget2(fid);
str3 = fget3(fid);
str4 = fget4(fid);
.
.
.

 


anfügen. Wenn so geht ist es in Ordnung
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2008, 13:18     Titel:
  Antworten mit Zitat      
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?

mfg
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 11.02.2008, 13:57     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2008, 15:26     Titel:
  Antworten mit Zitat      
Ok, ich probier das einmal... falls ich noch fragen habe, melde ich mich wieder Wink

Vielen Dank auf jeden fall!!

MfG,
Philipp
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 11.02.2008, 22:20     Titel:
  Antworten mit Zitat      
ok, du hast also csv und keine xls Dateien..

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.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2008, 01:47     Titel:
  Antworten mit Zitat      
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?

Wisst ihr was ich meine? Könnt ihr mir helfen??!!

LG,
Philipp
 
Nyquist
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 19.11.07
Wohnort: Laupheim
Version: ---
     Beitrag Verfasst am: 13.02.2008, 08:07     Titel:
  Antworten mit Zitat      
Hallo Philipp,

ich denke das hier wird dir helfen Very Happy

http://www.gomatlab.de/string-in-ex.....t451,highlight,test1.html
_________________

Mit freundlcihem Gruß
Nyquist
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2008, 21:04     Titel:
  Antworten mit Zitat      
Hallo nochmal,

erstmal vielen Dank für Euro Hilfen!! Funktioniert (nach unzähligen fehlgeschlagenen Versuchen) einwandfrei!!

Jetzt hätte ich noch eine Frage, wobei ich mir nicht sicher bin, ob das überhaupt möglich ist...

Kann man von Matlab aus ein Diagramm in Excel erstellen? Wenn ja, weiß jemand wie das geht?

Vielen Dank,
Philipp
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.