How to prevent decrement (melting) past 0 until growth increases again?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Siân Chilcott
il 7 Ago 2020
Commentato: Siân Chilcott
il 12 Ago 2020
I am creating a snow and ice height time series. Once the snow (hsnow) has completely melted, the energy is used to melt ice (hice). I may be being stupid but I can't seem to find a way to prevent the snow height falling below 0 (as the energy that causes it to decrease past 0 would be used to decrease an ice layer).
Basically once the snow height falls below 0 I want to enforce it at 0 or prevent further decrement past 0, until the snowfall increases again.
hsnow(day+1) = hsnow(day) + snowfall(day) + dh_snow;
h_ice(day+1) = hice(day) + growth(day) + dh_ice;
(dh_snow and dh_ice are the amount of ice and snow melted per day based on the energy available.)
Thanks in advance for any help!
0 Commenti
Risposta accettata
Image Analyst
il 7 Ago 2020
Another way, inside the loop, is to use the max() function:
hsnow(day+1) = max([0, hsnow(day) + snowfall(day) + dh_snow]);
h_ice(day+1) = max([0, hice(day) + growth(day) + dh_ice]);
If either one would be negative, like -5, then it will clip to 0 because the max of -5 and 0 is 0.
10 Commenti
Image Analyst
il 11 Ago 2020
For me it crashes at day 241. Try running the attached script.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/344629/image.png)
Now let's say that I took the values of a, b, c, d, and e when it crashes and extend the days to 500. It would look like the plot in the lower left:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/344632/image.png)
You can see that the 4th order equation has a min of 2.41 which means that it never crosses the x axis and has no real roots. So your code will just have to take that into account.
Più risposte (1)
Sudheer Bhimireddy
il 7 Ago 2020
As soon as you estimated hsnow, force all/any negative values to 0
hsnow(hsnow<0)=0;
0 Commenti
Vedere anche
Categorie
Scopri di più su Digital Filter Analysis in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!