⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plt_turns.m

📁 计量工具箱
💻 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 + -