function [j]=julianmd(y,m,d,h)
% JULIANMD: converts Gregorian calendar time to decimal Julian day.
% [j]=JULIANMD(y,m,d,h) converts Gregorian calendar dates to corresponding
% Julian day numbers. Although the formal definition holds that Julian
% days start and end at noon, here Julian days start and end at midnight.
% In this convention, Julian day 2440000 began at 0000 UT, May 23, 1968.
%
% INPUT: d - day (1-31) component of Gregorian date
% m - month (1-12) component
% y - year (e.g., 1979) component
% h - decimal hours (assumed 0 if absent)
%
% OUTPUT: j - decimal Julian day number (e.g., 0000 UT Jan 1 is 0.0)
%
% Usage: [j]=julianmd(y,m,d,h) (inputs scalars or matrices)
% or
% [j]=julianmd([y m d hr min sec]) (nx6 matrix input)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 8/28/98: version 1.1 (vectorized by RP)
% 8/5/99: version 2.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if nargin==3,
h=0.;
elseif nargin==1,
h=hms2h(y(:,4),y(:,5),y(:,6));
d=y(:,3);
m=y(:,2);
y=y(:,1);
end
mo=m+9;
yr=y-1;
i=(m>2);
mo(i)=m(i)-3;
yr(i)=y(i);
c = floor(yr/100);
yr = yr - c*100;
j = floor((146097*c)/4) + floor((1461*yr)/4) + ...
floor((153*mo +2)/5) +d +1721119;
% if you want Julian days to start and end at noon,
% replace the following line with:
% j=j+(h-12)/24;
j=j+h/24;