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

Fehler bei textscan

 

wolff2007
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 14:14     Titel: Fehler bei textscan
  Antworten mit Zitat      
Hey
mir wird immer ein Fehler bei der Benutzung von textscan herausgegeben und ich sitze jetzt schon mehrer stunden an diesem problem und kann es nicht lösen.
Ich muss mehrere csv Dateien importieren. Dafür rufe ich mit dem Befehl 'dir' den Ordner auf und lasse mir alle Dateien anzeigen. Dann importiere ich diese mit Hilfe von textscan (da string und double vorhanden) und einer for-schleife.

Wenn mir irgendjemand weiter helfen könnte wär ich sehr dankbar!!!

vielen Dank

wolff

Code:

files=dir('Y:\Projektarbeit\Daten\EEX Daten\ex_post\previus_day_generation\2011\*.csv');%auflisten aller files in previous_day_generation
imax=numel(files); %Wie viele sind es?
data1=cell(kmax,1);

for i=1:imax
%importieren der csv-dateien
fid=fopen(files(i).name,'rt');%rt überprüfen
data1{i,1}=textscan(fid,'%*s %s %s %s %s %*s %*s','HeaderLines',7,'Delimiter',';','CollectOutput',0);
fclose(fid);
data1{i,1}=[temp{:}]; %Dateiinhalt speichern
%data2=[data1{1} data1{2} data1{3} data1{4}];
%data3=data2(57:end-1,:); %Untermatrix
end
 


Fehler:

??? Error using ==> textscan
Invalid file identifier. Use fopen to generate a valid file identifier.

Error in ==> previous_day_generation at 9
data1{i,1}=textscan(fid,'%*s %s %s %s %s %*s
%*s','HeaderLines',7,'Delimiter',';','CollectOutput',1);
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.11.2012, 14:22     Titel:
  Antworten mit Zitat      
Hallo

die Dateien liegen ja in einem bestimmten Ordner, dass muss du auch FOPEN mitteilen. Um kompletten Pfad übergeben zu können, nutze FULLFILE. Dieser Befehl setzt den Pfadteile zusammen.

Code:
path2cvs = 'Y:\Projektarbeit\Daten\EEX Daten\ex_post\previus_day_generation\2011';
files=dir(fullfile(path2cvs ,'*.csv'));% auflisten aller files in previous_day_generation
imax=numel(files); % Wie viele sind es?
data1=cell(kmax,1);

for i=1:imax
%importieren der csv-dateien
fid=fopen(fullfile(path2cvs,files(i).name),'rt');% rt überprüfen
data1{i,1}=textscan(fid,'%*s %s %s %s %s %*s %*s','HeaderLines',7,'Delimiter',';','CollectOutput',0);
fclose(fid);
data1{i,1}=[temp{:}]; % Dateiinhalt speichern
%data2=[data1{1} data1{2} data1{3} data1{4}];
%data3=data2(57:end-1,:); % Untermatrix
end
Private Nachricht senden Benutzer-Profile anzeigen
 
wolff2007
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 17:40     Titel:
  Antworten mit Zitat      
Hi Denny,

erstmal vielen vielen Dank! Das uns schon wirklich sehr viel weitergeholfen!

Wir haben jetzt alle files importiert und sie in data2 aneinandergereiht. Jetzt haben wir noch 2 Probleme:

1.Die 5.Spalte der zu importierenden files ist eine Zahl. In unserem bisherigen Code haben wir alle Tabellenwerte als string importiert:

Code:

temp=textscan(fid,'%*s %s %s %s %s %*s %*s','HeaderLines',7,'Delimiter',';','CollectOutput',1);


Wenn wir nun 5.Spalte beim importieren mit textscan mit %f gekennzeichnen wir folgender Fehler ausgegeben:

??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

Error in ==> previous_day_generation at 12
data1{i}=[temp{:}]; % Dateiinhalt speichern

Was vorher mit string funktionier hat funktionier nun mit double nicht mehr. Wie kommt das?

2.Nachdem wir data2 generiert haben wollen wir alle Zeilen, die 'AT' in der ersten Spalte haben, löschen.

Bei folgendem

Code:

data2(data2(:,1)=='AT',:)=[]; %Löschen von Zeilen mit 'AT' in erster Spalte


bekommen wir diesen Fehler:

??? Undefined function or method 'eq' for input arguments of type 'cell'.

Error in ==> previous_day_generation at 23
data2(data2(:,1)=='AT',: )=[]; %Löschen von Zeilen mit 'AT' in erster Spalte

Liegt das daran das man nur double Werte miteinander vergleichen kann und keine string Werte? Wäre echt großartig wenn jmd einen Tipp für uns hat. Vielen Dank euch!

Code:

path2cvs = 'Y:\Projektarbeit\Daten\EEX Daten\ex_post\previus_day_generation\2011';
files=dir(fullfile(path2cvs,'*.csv'));% auflisten aller files in previous_day_generation
imax=numel(files); % Wie viele sind es?
data1=cell(imax,1); % definieren einer cell

%importieren der csv-dateien

for i=1:imax
fid=fopen(fullfile(path2cvs,files(i).name),'rt'); % rt überprüfen
temp=textscan(fid,'%*s %s %s %s %s %*s %*s','HeaderLines',7,'Delimiter',';','CollectOutput',1);
fclose(fid);
data1{i}=[temp{:}]; % Dateiinhalt speichern
end

%Aneinanderreihung der Files

data2=data1{1};

for i=2:imax
    data2=[data2;data1{i}];
end

data2(data2(:,1)=='AT',:)=[]; %Löschen von Zeilen mit 'AT' in erster Spalte
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.11.2012, 18:10     Titel:
  Antworten mit Zitat      
Hallo wolff2007,

Strings vergleicht man mit STRCMP, da für == (also "eq") entweder einer der beiden Variablen ein Skalar sein muss, oder beide die gleiche Größe haben müssen.
Code:
data2(strcmp(data2(:,1), 'AT'), :) = [];

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
wolff2007
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 19.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2012, 18:48     Titel:
  Antworten mit Zitat      
@ Jan S
Vielen Dank!! das hat uns sehr geholfen!!

weis jemand womit der ander Fehler zu tun hat ??
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 - 2025 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.