1function scaleout = imc2errgraph(imf,firstl1,firsth1,... 2 firstl,firsth,nvar,imstp,xlab,ylab,indxGimfml,xTick) 3% imc2errgraph: impulse, c (column: shock 1 to N), 2 error bands, graph 4% 5% imf: imstp-by-nvar^2 matrix of impulse responses. Column (responses to 1st shock, responses to 2nd shock 6% etc), Row (impusle steps), 7% firstl1: lower band, .68 8% highth1: high band, .68 9% firstl: lower band, .90 10% highth: high band, .90 11% nvar: number of variables 12% imstp: number of steps of impulse responses 13% xlab,ylab: labels 14% indxGimfml: 1, graph; 0, no graph 15% xTick: optional. Eg: [12 24 36]. 16%--------------- 17% scaleout: column 1 represents maximums; column 2 minimums. Rows: nvar variables. 18% 19% See imrgraph, fn_imcerrgraph, imrerrgraph 20% 21% Copyright (C) 1997-2012 Tao Zha 22% 23% This free software: you can redistribute it and/or modify 24% it under the terms of the GNU General Public License as published by 25% the Free Software Foundation, either version 3 of the License, or 26% (at your option) any later version. 27% 28% It is distributed in the hope that it will be useful, 29% but WITHOUT ANY WARRANTY; without even the implied warranty of 30% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 31% GNU General Public License for more details. 32% 33% If you did not received a copy of the GNU General Public License 34% with this software, see <http://www.gnu.org/licenses/>. 35% 36 37 38if nargin < 11, xTick = []; end 39 40t = 1:imstp; 41temp1=zeros(nvar,1); 42temp2=zeros(nvar,1); 43maxval=zeros(nvar,1); 44minval=zeros(nvar,1); 45for i = 1:nvar 46 for j = 1:nvar 47 jnk1=max(firsth(:,(j-1)*nvar+i)); 48 jnk2=max(firstl(:,(j-1)*nvar+i)); 49 jnk3=max(firsth1(:,(j-1)*nvar+i)); 50 jnk4=max(firstl1(:,(j-1)*nvar+i)); 51 jnk5=max(imf(:,(j-1)*nvar+i)); 52 53 temp1(j)=max([jnk1 jnk2 jnk3 jnk4 jnk5]); 54 % 55 jnk1=min(firstl(:,(j-1)*nvar+i)); 56 jnk2=min(firsth(:,(j-1)*nvar+i)); 57 jnk3=min(firstl1(:,(j-1)*nvar+i)); 58 jnk4=min(firsth1(:,(j-1)*nvar+i)); 59 jnk5=min(imf(:,(j-1)*nvar+i)); 60 61 temp2(j)=min([jnk1 jnk2 jnk3 jnk4 jnk5]); 62 end 63 maxval(i)=max(temp1); 64 minval(i)=min(temp2); 65end 66 67scaleout = [maxval(:) minval(:)]; 68 69%-------------- 70% Column j: Shock 1 to N; Row i: Responses to 71%------------- 72if indxGimfml 73 %figure 74 rowlabel = 1; 75 for i = 1:nvar 76 columnlabel = 1; 77 78 if minval(i)<0 79 if maxval(i)<=0 80 yt=[minval(i) 0]; 81 else 82 yt=[minval(i) 0 maxval(i)]; 83 end 84 else % (minval(i) >=0) 85 if maxval(i) > 0 86 yt=[0 maxval(i)]; 87 else % (identically zero responses) 88 yt=[-1 0 1]; 89 end 90 end 91 92 scale=[1 imstp minval(i) maxval(i)]; 93 for j = 1:nvar 94 k1=(i-1)*nvar+j; 95 k2=(j-1)*nvar+i; 96 subplot(nvar,nvar,k1) 97 plot(t,imf(:,k2),t,[firstl1(:,k2) firsth1(:,k2)],'--',... 98 t,[firstl(:,k2) firsth(:,k2)],'-.',t,zeros(length(imf(:,k2)),1),'-'); 99 100 set(gca,'XTick',xTick) 101 set(gca,'YTick',yt) 102 grid; 103 104 axis(scale); % put limits on both axes. 105 %set(gca,'YLim',[minval(i) maxval(i)]) 106 if 1 % no numbers on axes 107 set(gca,'XTickLabel',' '); 108 set(gca,'YTickLabel',' '); 109 else % put numbers on both axes 110 if i<nvar 111 set(gca,'XTickLabelMode','manual','XTickLabel',[]) 112 end 113 if j>1 114 set(gca,'YTickLabel',' '); 115 end 116 end 117 118 if rowlabel == 1 119 %title(['x' num2str(j)]) 120 %title(eval(['x' num2str(j)])) 121 title(char(xlab(j))) 122 end 123 if columnlabel == 1 124 %ylabel(['x' num2str(i)]) 125 %ylabel(eval(['x' num2str(i)])) 126 ylabel(char(ylab(i))) 127 end 128 columnlabel = 0; 129 end 130 rowlabel = 0; 131 end 132end 133