📄 tsdate.m
字号:
function [out] = tsdate(beg_yr,beg_mth,freq,nobs)% PURPOSE: produce a time-series date string for an observation #% given beginning year, beginning period and frequency of the data% ---------------------------------------------------% USAGE: out = tsdate(beg_yr,beg_period,freq,obsn);% or: tsdate(beg_yr,beg_period,freq,obsn);% or: tsdate(cal_struct,obsn);% where: beg_yr = beginning year, e.g., 1974% beg_period = beginning period, e.g., 4 for april% freq = 1 for annual, 4 for quarterly 12 for monthly% obsn = the observation #% cal_struct = a structure returned by cal()% % e.g., tsdate(1974,1,12,13) would print: Jan75% tsdate(1974,1,4,13) would print: Q1-77% tsdate(1974,1,1,13) would print 1986% out = tsdate(1974,1,12,13) would return a string `Jan75'% % cstr = cal(1974,1,12)% tsdate(cstr,13) would print Jan75% ---------------------------------------------------% RETURNS: a string, or: simply displays the date associated% with obsn (observation #)% ---------------------------------------------------% SEE ALSO: tsplot(), tsprint()% ---------------------------------------------------% written by:% James P. LeSage, Dept of Economics% University of Toledo% 2801 W. Bancroft St,% Toledo, OH 43606% jpl@jpl.econ.utoledo.eduswitch nargincase 4 % case where a cal() structure is not used% we need do nothing herecase 2 % case where a cal() structure is used% error checkingif ~isstruct(beg_yr)error('tsdate: one of the two inputs must be a structure from cal');end;nobs = beg_mth; % the second argument is really an observation #% the first argument is really a structure returned by calfreq = beg_yr.freq;beg_mth = beg_yr.beg_per;beg_yr = beg_yr.beg_yr;otherwiseerror('Wrong # of arguments to tsdate');end; % end of switch on nargin% error check for 4-digit years on input [junk strsize] = size(num2str(beg_yr)); if strsize ~= 4; error('input a 4-digit year to tsdate'); end;switch freq; case 1, % case of annual series if (beg_mth > 1); error('Wrong beg_per argument in tsdate');end; ydigit = 'yyyy'; d = datenum(beg_yr,12*nobs,1); if nargout == 0 fprintf('%6s \n',datestr(d,ydigit)); else out = datestr(d,ydigit); end; case 4, % case of quarterly series if (beg_mth > 4); error('Wrong beg_per argument in tsdate');end; ydigit = 'QQ-YY'; d = datenum(beg_yr,beg_mth*3+3*nobs-3,1); if nargout ==0 fprintf('%6s \n',datestr(d,ydigit)); else out = datestr(d,ydigit); end; case 12, % case of monthly series if (beg_mth > 12); error('Wrong beg_per argument in tsdate');end; ydigit = 'mmmyy'; d = datenum(beg_yr,beg_mth+nobs-1,1); if nargout == 0 fprintf('%6s \n',datestr(d,ydigit)); else out = datestr(d,ydigit); end; otherwise % how did we get here? disp('frequency unknown to tsdate');end; % end of switch on freq
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -