📄 plt_turns.m
字号:
function plt_turns(results,cstruc,vname)% PURPOSE: plot turning points in a time series% using results structure variable from fturns()% -----------------------------------------------------% USAGE: plt_turns(results,cstruct,vname)% where: results = a results structure variable returned% by the fturns() function% cstruct = (optional) calendar structure variable from cal()% vname = name for time-series in plot legend% e.g. plt(fturns(y))% dates = cal(1982,1,12);% plt(fturns(y),dates);% plt(fturns(y),dates,'gdp-series');% -----------------------------------------------------% RETURNS:nothing, simply plots time-series with turns denoted% ------------------------------------------------------% SEE ALSO: plt, fturns, cal % written by:% James P. LeSage, Dept of Economics% University of Toledo% 2801 W. Bancroft St,% Toledo, OH 43606% jpl@jpl.econ.utoledo.edu% error checking on inputstsflag = 0; vflag = 0; % defaultsif nargin == 1 % don't use tsplot if ~isstruct(results) error('plt_turns: requires a results structure from fturns'); end; % use defaultselseif nargin == 2 % use tsplot if ~isstruct(cstruc) error('plt_turns: requires a cal structure for 2nd argument'); end; tsflag = 1;elseif nargin == 3 % we have a vnamevflag = 1;tsflag = 1;elseerror('Wrong # of arguments to plt_turns');end;y = results.y;ut = results.ut;dt = results.dt;nobs = length(y);yut = find(ut);ydt = find(dt);switch tsflagcase{0} % use plottt=1:nobs;plot(tt,y,'r-',yut,y(yut,1),'k^',ydt,y(ydt,1),'kv');if vflag == 0 legend('time-series','upturn','downturn');else legend(vname,'upturn','downturn');end;case{1} % use tsplotbegp = 1;endp = nobs;freq = cstruc.freq; switch freq; case 1, % case of annual series out = cal(cstruc.beg_yr,cstruc.beg_per,cstruc.freq,begp); yut = []; xut = []; ydt = []; xdt = []; beg_yr = out.year; yr = beg_yr:beg_yr+nobs-1; yrs = yr'; cntu = 0; cntd = 0; for i=1:nobs; if ut(i,1) == 1 cntu = cntu+1; yut(cntu,1) = y(i,1); xut(cntu,1) = datenum(yrs(i,1),1,1); elseif dt(i,1) == 1 cntd = cntd+1; ydt(cntd,1) = y(i,1); xdt(cntd,1) = datenum(yrs(i,1),1,1); end; end; ydigit = 'yyyy'; plot(datenum(yrs,1,1),y(begp:endp,:)); hold on; plot(xut,yut,'^k'); plot(xdt,ydt,'vk'); if vflag == 0 legend('time-series','upturn','downturn'); else legend(vname,'upturn','downturn'); end; fsize = 9; % font size datetick('x',ydigit); set(gca,'fontsize',fsize); set(gca,'tickdir','in'); hold off; case 4, % case of quarterly series yrs = zeros(nobs,1); qtr = zeros(nobs,1); out = cal(cstruc.beg_yr,cstruc.beg_per,cstruc.freq,begp); beg_yr = out.year; beg_qtr = out.period; yut = []; xut = []; ydt = []; xdt = []; cntu = 0; cntd = 0; for i=1:nobs; yrs(i,1) = beg_yr; qtr(i,1) = beg_qtr; beg_qtr = beg_qtr+1; if beg_qtr > 4 beg_yr = beg_yr+1; beg_qtr = 1; end; if ut(i,1) == 1 cntu = cntu+1; yut(cntu,1) = y(i,1); xut(cntu,1) = datenum(yrs(i,1),qtr(i,1),1); elseif dt(i,1) == 1 cntd = cntd+1; ydt(cntd,1) = y(i,1); xdt(cntd,1) = datenum(yrs(i,1),qtr(i,1),1); end; end; ydigit = 'QQ-YY'; plot(datenum(yrs,qtr,1),y(begp:endp,:)); hold on; plot(xut,yut,'^k'); plot(xdt,ydt,'vk'); if vflag == 0 legend('time-series','upturn','downturn'); else legend(vname,'upturn','downturn'); end; fsize = 9; % font size datetick('x',ydigit); set(gca,'fontsize',fsize); set(gca,'tickdir','in'); hold off; case 12, % case of monthly series yrs = zeros(nobs,1); yut = []; xut = []; mth = zeros(nobs,1); ydt = []; xdt = []; out = cal(cstruc.beg_yr,cstruc.beg_per,cstruc.freq,begp); beg_yr = out.year; beg_mth = out.period; cntu = 0; cntd = 0; for i=1:nobs; yrs(i,1) = beg_yr; mth(i,1) = beg_mth; beg_mth = beg_mth+1; if beg_mth > 12 beg_yr = beg_yr+1; beg_mth = 1; end; if ut(i,1) == 1 cntu = cntu+1; yut(cntu,1) = y(i,1); xut(cntu,1) = datenum(yrs(i,1),mth(i,1),1); elseif dt(i,1) == 1 cntd = cntd+1; ydt(cntd,1) = y(i,1); xdt(cntd,1) = datenum(yrs(i,1),mth(i,1),1); end; end; ydigit = 'mmmyy'; plot(datenum(yrs,mth,1),y); hold on; plot(xut,yut,'^k'); plot(xdt,ydt,'vk'); if vflag == 0 legend('time-series','upturn','downturn'); else legend(vname,'upturn','downturn'); end; fsize = 9; % font size datetick('x',ydigit); set(gca,'fontsize',fsize); set(gca,'tickdir','in'); hold off; otherwise % how did we get here? disp('frequency unknown to tsplot'); end; % end of switch freqotherwise end; % end of switch tsflag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -