Filter löschen
Filter löschen

creating a loop and functions

1 Ansicht (letzte 30 Tage)
Tarek Zaqout
Tarek Zaqout am 10 Okt. 2019
Kommentiert: Peter Perkins am 15 Okt. 2019
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 Kommentare
Tarek Zaqout
Tarek Zaqout am 10 Okt. 2019
alright to make it simpler.
hi=0.2391;
then assuming all variables are defined.
for i=1:298
hi = hi+(deltat*(Ai/Al))*((2*9.81)^0.5/kf)*((ho-hi)/(abs(ho-hi)^0.5)+(deltat*(Qr/Al)))
end
Peter Perkins
Peter Perkins am 15 Okt. 2019
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

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by