creating a loop and functions
3 次查看(过去 30 天)
显示 更早的评论
Hi,
I'm trying to perform a simple model but can't seem to create a loop. The issue is that I use known values (ho and hl) to solve the equation.
Then I need to use a data set of (ho) consisting of a column of 298 into the equation while the (hl) is from the previous iteration.
here is my code, I'm using a (for loop), but the problem is that it produces the same value of the intitial (hl) for all 298 outputs. Any ideas what is wrong?
Al=36000;
Qr=31.5;
Ai=3.14*(150/2)^1/2;
Time=table2array(wl(:,1));
wl_sea=table2array(wl(:,3));
wl_lagoon=table2array(wl(:,4));
ho=20.62949/100;
deltat=0;
hl=23.908655/100;
kf=0.3;
% the first step is to use the first known lagoon water level to calculate
% the next level using the sea water level as input
hl0=hl+(deltat*(Ai/Al))*((2*9.81)^0.5/kf)*((ho-hl)/(abs(ho-hl)^0.5)+(deltat*(Qr/Al)))
ho=wl_sea;
for i=1:1:298
hi = hl0;
h(i)=hi;
hi = hi+(deltat*(Ai/Al))*((2*9.81)^0.5/kf)*((ho-hi)/(abs(ho-hi)^0.5)+(deltat*(Qr/Al)))
end
6 个评论
Peter Perkins
2019-10-15
Loop issues aside, you definitely can make this (and the other two lines like it)
Time = table2array(wl(:,1))
simpler:
Time = wl.Time % or whatever the var name is
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!