我正在使用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
答案 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)]
。我希望这应该给你正确的答案。