Info
此问题已关闭。 请重新打开它进行编辑或回答。
Nested if conditions to compute flow
1 次查看(过去 30 天)
显示 更早的评论
My dataset includes time series data of rainfall and CN for one year. I am trying to determine the flow for two conditions i.e
if Rainfall > 0.2 then
Runoff = 1000/CN-10
otherwise
Runoff = (Rainfall - 0.2 * (1000/CN -10)^2)/Rainfall + 0.8 *(1000/CN -10).
I have tried following script but it did not work.
idx = Rainfall > 0.2;
Runoff(idx) = 1000/CN - 10;
Runoff(~idx) = (Rainfall - 0.2 * (1000/CN -10)^2)/Rainfall + 0.8 *(1000/CN -10);
Can any body suggest me script?
Regards, Saleem
1 个评论
per isakson
2015-10-2
编辑:per isakson
2015-10-2
"but it did not work"   What happened? Error or what?   Rainfall and Runoff how are they defined?
回答(2 个)
Eng. Fredius Magige
2015-10-2
编辑:Walter Roberson
2015-10-2
Try this one:
dataset=[]; % copy you three columns of time, rainfall and CN into [], preferable from excel sheet
% note arrangement of you data very important 1st time, 2nd rainfall and 3rd CN
[datarow datacol]=size(dataset)
hold on
for n=1:datarow
Rainfall=data(n,2)
if (Rainfall > 0.2)
Runoff = 1000/(dataset(n,3)-10)
else
Runoff = (Rainfall - 0.2 * (1000/(dataset(n,3)-10))^2)/Rainfall + 0.8 *(1000/(dataset(n,3)-10)).
end
hold off
2 个评论
Eng. Fredius Magige
2015-10-2
% The previous just after for, the data is edited be dataset. otherwise be specific, inclusive CN %
[datarow datacol]=size(dataset) hold on for n=1:datarow Rainfall=dataset(n,2) if (Rainfall > 0.2) Runoff = 1000/(dataset(n,3)-10) else Runoff = (Rainfall - 0.2 * (1000/(dataset(n,3)-10))^2)/Rainfall + 0.8 *(1000/(dataset(n,3)-10)). end hold off
Thorsten
2015-10-2
编辑:Thorsten
2015-10-2
Does this work for you?
idx = Rainfall > 0.2;
Runoff(idx) = 1000/CN(idx) - 10;
Runoff(~idx) = (Rainfall(~idx) - 0.2 * (1000./CN(~idx)-10).^2)./Rainfall(~idx) + 0.8 *(1000./CN(~idx) -10);
If not, please report exactly what went wrong.
3 个评论
Thorsten
2015-10-2
What about this? And do your really mean -0.2*s instead of -0.2*S in the "otherwise" condition?
idx = Rainfall - 0.2*S < 0;
ExcessRainfall(idx) = 0;
ExcessRainfall(~idx) = (Rainfall(~idx) - 0.2*s(~idx)).^2./Rainfall(~idx) + 0.8*S(~idx);
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!