2014-06-19 201 views
1

我正在處理使用Matlab從.csv文件進行數據分析。我必須使用所有文件的相同公式分析數百個.csv文件中的數據。數據的輸出將存儲在一個矩陣(nrow和ncolumn)中。Matlab批處理.csv文件

我有一個問題,當計算完成時,矩陣的第一列給出了正確的答案,而其餘的列給出了錯誤的答案。任何人都可以幫我解決這個問題嗎?

這是我的代碼。

%% importing the csv file with selected column 
    files=dir('*.csv'); 
    for r=1:length(files); 
     LHR=importcsv(files(r).name); 

     %% Calculation of SMD 
     % Define These Value 
     TAW=-216; 
     RAW=-129; 

     % The very first row of Soil Moisture Deficit 
     for j=1 
      SMD(j,r)=(LHR.RAIN(j)-LHR.PET(j)); 
      if SMD(j,r)>0; 
       SMD(j,r)=0; 
      elseif SMD(j,r)<RAW; 
       SMD(j,r)=(LHR.RAIN(j)-(LHR.PET(j)*((TAW-SMD(j-1))/(TAW-RAW)))); 
      end 
     end 

     %for the following SMD Calculation 
     for o=2:(numel(LHR.RAIN)); 
      SMD(o,r)=SMD(o-1)+(LHR.RAIN(o)-LHR.PET(o)); 
      % The SMD conditions 
      if SMD(o,r)>0; 
       SMD(o,r)=0; 
      elseif SMD(o,r)<RAW; 
       SMD(o,r)=SMD(o-1)+(LHR.RAIN(o)-(LHR.PET(o)*((TAW-SMD(o-1))/(TAW-RAW)))); 
      end 
     end 
end 
+0

輸出的變量名稱'SMD'是什麼?在這種情況下,「錯誤」是什麼意思?您是否嘗試過使用[調試器](http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html)來查看每個步驟正在寫入的內容? – excaza

+0

@excaza是的,我的輸出變量名稱是SMD,我是Matlab新手,從未使用調試器,會嘗試使用調試器來查看寫入內容。我所說的錯誤是計算的值與其顯示的不同,我試圖用excel計算進行比較,顯然只有第一列值是正確的。 – SABER

回答

1

用以下代碼更改第三個for循環。這應該給你正確的答案。

%for the following SMD Calculation 
      for o=2:(numel(LHR.RAIN)); 
       SMD(o,r)=SMD(o-1,r)+(LHR.RAIN(o)-LHR.PET(o)); 
       % The SMD conditions 
       if SMD(o,r)>0; 
        SMD(o,r)=0; 
       elseif SMD(o,r)<RAW; 
        SMD(o,r)=SMD(o-1,r)+(LHR.RAIN(o)-(LHR.PET(o)*((TAW-SMD(o-1,r))/(TAW-RAW)))); 
       end 
      end 
    end 

我會在這裏解釋你。 SMD是一個二維矩陣。在你的代碼的第三個循環中,你提到它是一個向量[SMD(o-1)]。我已將其更改爲[SMD(o-1,r)]。我希望這應該給你正確的答案。

+0

燦爛的人,它的作品,非常感謝你! – SABER