Calculates the length of daylight for any day of the year and latitude.
This uses Herbert Glarner's formulae which do not take into account refraction, twilight, size of the sun, etc http://herbert.gandraxa.com/herbert/lod.asp.
An example is included
See blog.nutaksas.com for more details/
Travis Wiens (2020). Day Length (https://www.mathworks.com/matlabcentral/fileexchange/20390-day-length), MATLAB Central File Exchange. Retrieved .
Thanks for your m-file, but I have a problem with the code!
I ran the code but the longest day of the year for the northern hemisphere did not occur June 21.
Good！Thanks for sharing.
This is a helpful function; thanks for sharing.
The input day format is somewhat non-user-friendly. The function header describes the input date as the "day of the year, counted starting with the day of the December solstice in the first year of a Great Year." To maintain Travis' functionality and get this function to work with Matlab's datenum format, add this to the beginning of the function:
if nargin>0 && any(Day>366)
[y,~,~] = datevec(Day);
Day = 11+datenum(Day)-datenum(y,1,1);
The above assumes that if any input date exceeds 366, it must be in datenum format. Then the function *approximates* day length assuming a static December solstice. Results will not be exact on the daily timescale, but should be sufficient to put multi-year data in datenum format in context with solar cycles.
Fixes bug for latitudes above the arctic circle.
Removed GPL per Mathworks' requirements.