Matlab批处理.csv文件

时间:2014-06-19 15:56:56

标签: matlab csv batch-processing

我正在使用Matlab处理来自.csv文件的数据分析。我必须使用相同的公式分析来自数百个.csv文件的数据。数据的输出将存储在一个矩阵(nrow和ncolumn)中。

我有一个问题,当计算完成时,矩阵的第一列给出了正确的答案,而其余的列给出了错误的答案。任何人都可以帮我解决这个问题吗?

这是我的代码。

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

1 个答案:

答案 0 :(得分: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是二维矩阵。在代码的第三个for循环中,您将其称为向量[SMD(o-1)]。我已将其更改为[SMD(o-1,r)]。我希望这应该给你正确的答案。