2016-07-05 29 views
0

我有大約70,000張紙,都必須進行計算,然後將所有結果編譯到一張新紙張(這將是70,000行長)。 它需要按日期排序。如何循環執行excel表格,執行計算並編譯結果

我非常非常非常貧窮的matlab,但我有我需要的腳本,爲每個Excel表格,我只是不確定如何使它爲所有人做。 謝謝!!! (我拿出一些不重要的代碼)

%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] 

我想我需要做的線沿線的東西:

filenames=dir('*.csv') 

,我發現這可能是有用的:

filenames=dir('*.csv'); 

    for file=filenames' 

    csv=load(file.name); 





with stuff in here 


end 
+0

[通過matlab文件夾中的文件循環]可能的重複(http://stackoverflow.com/questions/11621846/loop-through-files-in-a-folder-in-matlab) – excaza

+0

這就是我得到的地方最後一位,但它給了我一個錯誤,並非所有的表都是相同的尺寸。 我不需要做我和j的東西嗎?我也不知道該怎麼做。 –

+0

我沒有看到你的問題的任何地方... – excaza

回答

0

您有正確的想法,但是您需要對您的文件名進行索引,以便能夠在for循環中逐句通過它們。

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 

你如何選擇文件名和目錄取決於你。

+0

非常感謝!我會嘗試這個 –

+0

嗨,所以我得到我的代碼來通過我所有的文件(嗯,我現在測試它10)。我不確定你的意思是FileNames。我不可能列出所有70,000 :( –

+0

我只是輸入這3個文件名作爲例子,你可以使用'dir'命令獲得所有的文件名,確保你將它寫爲'STRUCT = dir;'以確保答案已存儲(STRUCT可以是任何你想要的名稱),它們將被存儲在一個結構中,文件名在STRUCT.name列中,然後你可以通過FileNames = {STRUCT .name};'這將爲您的目錄中的所有文件生成變量'FileNames'。具有不同長度的文件名不應該是一個問題 –