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

Hilfe beim Einlesen von Daten ... Indexproblem

 

floh91
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 25.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2009, 11:57     Titel: Hilfe beim Einlesen von Daten ... Indexproblem
  Antworten mit Zitat      
Hilfe beim Einlesen von Daten

Hallo,

Ich benötige dringend Hilfe beim Einlesen von Datensätzen, die variabel sind.
D.h. ich habe Datensätze, die sich in der Anzahl der Spalten und Zeilen ändern können. Dies muss berücksichtigt werden.

Das Problem hierbei ist, dass die Daten nicht von 1 bis zum Ende zeilenweise durchgelesen werden können, sondern immer erst für x = konst. alle y-Werte und dann das nächste x …

Die Datensätze sind so aufgebaut, dass für ein x – y Feld erste zeilenweise für alle y = konst. die x Werte aufgenommen werden und dann zum nächsten Wert y = konst. gegangen wird (nächste Zeile).

Bisher hatte ich so eine Lösung, die sich jedoch nicht als gelungen herausstellt, da mir jetzt öfter ein Indexfehler angezeigt wird.

Code:
%% Geschwindigkeit
 
clear all
close all
clc;
 
colums=16;  %%% the total numbers of columns
Headerlines=20;  %%% the number of the header lines
 
% Datein importieren
 
d=uigetdir('','Auswahl Datenordner');
cd(d);
pr=dir('*.dat');
names={pr.name};
 
numfiles=numel(names);
 
 
for i= 1:numfiles
   
    cd(d);
   
    fid= fopen(names{1,i},'r');
   
    InputText= textscan(fid, '%s', Headerlines, 'delimiter', '\n'); %read the head of the file
    Daten= fscanf(fid,'%g %g %g ', [colums inf]);  %read the data
   
    fclose(fid);
   
    [pathstr, name, ext, versn] = fileparts(names{1,i});
    yl= [min(Daten(4,:)) max(Daten(4,:))];
   
    nx= length(unique(Daten(1,:)));
    ny= length(unique(Daten(2,:)));    
     
    for j= 1:ny      
                     
     in= sub2ind([nx ny], 1:nx, j*ones(1,nx));
     X= Daten(1,in);
     C= Daten(4,in);   % u Werte
     C2= Daten(5,in);  % v Werte
     V= Daten(10,in);  % Vort Werte  
     
     N(j) = j;
         
     C_re = sqrt(C(X<5).^2 + C2(X<5).^2);
         
     [minC_re, minC_re_index] = min(C_re);
     X_minC_re(j) = X(minC_re_index);      
     CO(j)= min(C_re);                    
     
     [maxV, maxV_index] = max(V);    
     X_maxV(j) = X(maxV_index);      
     VO(j)= max(V);                  
     
     name2 = strcat(name,'_u_', num2str(j));
     
   
     X=X(X<5);
     C=C_re;
   
    end
   
    VOmax(i)= max(VO);
    t(i) = 0.033*i-0.033;
   
   name7 = strcat('vort_max_t');  
   fid= fopen(strcat(name7,'.out'),'wt');
   fprintf(fid,'%2.6f %2.6f\n',vertcat(t, VOmax));
   fclose(fid);
   
   
end
   
 
     plot(t,VOmax)   % max Vort-max über die Zeit
       
     % Plot formatieren
      set(gca,...
     'Gridlinestyle','-','xMinorGrid','off','yMinorGrid','off',...
     'Fontname', 'Helvetica','fontsize',15);
      set(1,'units','centimeters','position',[0 0 8 8], ...
     'PaperOrientation', 'portrait', 'PaperPositionMode', 'auto',...
     'papersize',[14 10]);
      ylabel('Wirbelstärke')
      xlabel('Zeit [sek]')
   
     % Plot speichern
     name8 = strcat('vort_max_t');
     saveas(gcf, name8, 'png');




Hoffe ganz stark auf Hilfe.

Danke schön

Flo

PS: Ich hänge mal 2 Datenfiles mit dran. Nr. 1 funktioniert, Nr. 2 nicht …

2.doc
 Beschreibung:
funktioniert nicht

Download
 Dateiname:  2.doc
 Dateigröße:  263 KB
 Heruntergeladen:  797 mal
1.doc
 Beschreibung:
funktioniert

Download
 Dateiname:  1.doc
 Dateigröße:  635 KB
 Heruntergeladen:  863 mal
Private Nachricht senden Benutzer-Profile anzeigen


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 03.12.2009, 14:04     Titel:
  Antworten mit Zitat      
Hi, dass ist meiner Meinung nach viel zu kompliziert. Lies ersteinmal alle Daten mit textscan ein. Dann hast du die Daten im Speicher und kannst deine Berechnungen viel leichter durchführen. Leseprozesse sind immer langsam, deswegen würde ich vermeiden Berechnungen und Leseprozesse in dieser Art zu koppeln. Wie man textscan benutzt habe ich zum Beispiel hier:
http://www.gomatlab.de/txt-datei-mi.....alten-einlesen-t9492.html
geschrieben, dass funktioniert auch für unterschiedliche Spalten, wobei ich bei dir nach dem Header ja keine mehr sehe oder täusche ich mich da?

Viele Grüße,

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