2016-07-05 11 views
0

Ich habe ungefähr 70.000 Blätter, die alle Berechnungen haben müssen, und dann werden alle Ergebnisse in ein neues Blatt kompiliert (das 70.000 Zeilen lang sein würde). Es muss nach Datum sortiert werden.Wie man Excel-Blätter durchläuft, Berechnungen durchführt und Ergebnisse kompiliert

Ich bin sehr sehr arm an Matlab, aber ich habe was ich brauche das Skript für jedes Excel-Blatt zu tun, ich bin nur unsicher, wie man es für alle machen. Danke !!! (Habe ich einige der nicht wichtig Code aus)

%Reading in excel sheet 

    B = xlsread('24259893-008020361800.TorqueData.20160104.034602AM.csv'); 



%Creating new matrix 

    [inYdim, inXdim] = size(B); 

    Ydim = inYdim; 

    [num,str,raw]=xlsread('24259893-008020361800.TorqueData.20160104.034602AM.csv',strcat('A1:C',num2str(Ydim))); 



%Extracting column C 

    C=raw(:,3); 

    for k = 1:numel(C) 

     if isnan(C{k}) 

     C{k} = ''; 

    end 

end 


%Calculations 

    TargetT=2000; 

    AvgT=mean(t12); 

    TAcc=((AvgT-TargetT)/TargetT)*100 ; 

    StdDev=std(B(ind1:ind2,2)); 

    ResTime=t4-t3; 

    FallTime=t6-t5; 

    DragT=mean(t78); 

    BreakInT=mean(t910); 

    BreakInTime=(t10-t9)/1000; 

    BreakInE=BreakInT*BreakInTime*200*.1047; 






%Combining results 

    Results=[AvgT TAcc StdDev ResTime FallTime DragT BreakInT BreakInTime BreakInE] 

Ich glaube, ich brauche etwas entlang der Linien zu tun:

filenames=dir('*.csv') 

und ich fand dies die nützlich sein können:

filenames=dir('*.csv'); 

    for file=filenames' 

    csv=load(file.name); 





with stuff in here 


end 
+0

Mögliche Duplikate von [Schleife durch Dateien in einem Ordner in Matlab] (http://stackoverflow.com/questions/11621846/loop-through-files-in-a-folder-in-matlab) – excaza

+0

Das ist, wo ich habe das letzte Bit von, aber es gibt mir einen Fehler, dass nicht alle Blätter die gleiche Dimension haben. Und muss ich nicht Sachen mit i und j tun? Ich weiß auch nicht, wie ich das machen soll. –

+0

Ich sehe das nirgendwo in Ihrer Frage ... – excaza

Antwort

0

Sie haben die richtige Idee, aber Sie müssen Ihre Dateinamen indexieren, um sie in der for-Schleife durchlaufen zu können.

FileDir = 'Your Directory'; 
FileNames = {'Test1';'Test2';'Test3'}; 
for k=1:length(FileNames) 
    file=[FileDir,'/',FileNames{k}]); 
    [outputdata]=xlsread(file,sheet#, data locations); 
    THE REST OF YOUR LOOP, Indexed by k 
end 

Wie Sie wählen, um die Dateinamen und das Verzeichnis zu bekommen, liegt bei Ihnen.

+0

Vielen Dank! Ich werde versuchen, dies –

+0

Hallo, also habe ich meinen Code durch alle meine Dateien gehen (nun, ich teste es auf 10 für jetzt). Ich bin mir nicht sicher, was Sie mit FileNames meinen. Ich kann nicht alle 70.000 auflisten :( –

+0

Ich habe gerade diese 3 Dateinamen als Beispiel eingegeben. Sie können alle Ihre Dateinamen mit dem 'dir' Befehl erhalten. Stellen Sie sicher, dass Sie das als 'STRUCT = dir;' schreiben um sicherzustellen, dass die Antwort gespeichert wird (STRUCT kann den von Ihnen gewünschten Namen haben.) Sie werden in einer Struktur mit den Dateinamen in der Spalte STRUCT.name gespeichert. Sie können sie dann mit 'FileNames = {STRUCT .name}; 'Dadurch wird die Variable' FileNames' für alle Dateien in Ihrem Verzeichnis generiert, wobei Dateinamen mit unterschiedlichen Längen kein Problem darstellen –

Verwandte Themen