我使用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发布于 2014-06-19 16:45:24
使用以下代码更改第三个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)]。我希望这能给你正确的答案。
https://stackoverflow.com/questions/24311043
复制相似问题