Code covered by the BSD License

### Highlights from Vectorized Solar Azimuth and Elevation Estimation

4.25
4.2 | 4 ratings Rate this file 36 Downloads (last 30 days) File Size: 3.58 KB File ID: #23051 Version: 1.1

# Vectorized Solar Azimuth and Elevation Estimation

### Darin Koblick (view profile)

20 Feb 2009 (Updated )

Predict the topocentric solar position defined by geodetic lat, lon, Alt, and a universal time

File Information
Description

Predict the azimuth and elevation of the Sun within +/- 1 degree at any geodetic latitude, longitude and altitude. Due to popular demand, this routine has been vectorized for speed.

Function Call: [Az El] = SolarAzEl('2008/02/18 13:10:00',60,15,0)

Input List:
UTC Date and Time - Use format YYYY/MM/DD hh:mm:ss or MATLAB date vector dimensions can be [N x 1]
Latitude - Site Latitude in degrees -90:90 -> S(-) N(+) dimensions can be [N x 1]
Longitude - Site Longitude in degrees -180:180 W(-) E(+) dimensions can be [N x 1]
Altitude - Site Altitude in km dimensions can be [N x 1]

Output List:
Az - Solar Azimuth angle in degrees [N x 1]
El - Solar Elevation/Altitude Angle in degrees [N x 1]

Acknowledgements
MATLAB release MATLAB 7.7 (R2008b)
19 Feb 2015 L. He

### L. He (view profile)

very nice program. I compare it with
http://www.mathworks.com/matlabcentral/fileexchange/4605-sun-position-m

the result is almost same. That one is more accurate,but not Vectorized yet.

jd = juliandate(datestr([y,mo,d,h,mi,s],'yyyy/mm/dd HH:MM:SS'),'yyyy/mm/dd HH:MM:SS');
do not use datestr but use date_num directly.
this will boost the speed, a lot

08 Apr 2013 Per

### Per (view profile)

Very useful function. With a few updates it can handle vector time input. I would prefer the use of matlab UTC time input in order to speed up.

27 Aug 2009 Phil

### Phil (view profile)

Ropey when using vector times: (line 36 generates a vector eccentricity: line 42 then requires an edit to force array multiply not matrix multiply). Still unable to get vector time version to agree with loop version....
As Mr. Picky, I would prefer time argin to be Matlab datenum, not string.
HOWEVER, this is the only code I've found that gives Azimuth round the full 360: most are 0-180 and it's up to you to find if its in the east or west... due to using code like
http://en.wikipedia.org/wiki/Solar_azimuth_angle
Thanks

19 Mar 2009 Anthony Kendall

### Anthony Kendall (view profile)

Excellent function, it's fast, compact, and easily modified for my particular needs. Thank you very much! BTW, I compared it with sun position tables, (http://www.srrb.noaa.gov/highlights/sunrise/azel.html) and it does very well.