0001 function initvalf_(fname,period,varargin)
0002 global M_ oo_ options_
0003 global y_start_date ex_start_date
0004
0005 if ~isempty(strfind(upper(fname),'.XLS'))
0006 [data,names_v]=xlsread(fname);
0007 else
0008 load(fname);
0009 end
0010
0011 if length(period) == 2
0012 period = dy_date(period(1),period(2));
0013 end
0014
0015 if period - max(M_.maximum_lag,M_.maximum_lag) < 0
0016 error(['INITVALF_: not enough data points in database for number of' ...
0017 ' lags. Start later!'])
0018 end
0019
0020 if nargin > 2
0021 if strcmp(upper(varargin{1}),'SERIES')
0022 series = 1 ;
0023 elseif strcmp(upper(varargin{1}),'MAT')
0024 series = 0 ;
0025 else
0026 error(['INITVALF: unknown option ' varargin{1}])
0027 end
0028 else
0029 series = 0 ;
0030 end
0031
0032 y1 = floor((period-M_.maximum_lag)/M_.freq);
0033 p1 = period-M_.maximum_lag-M_.freq*y1;
0034 y_start_date(2) = M_.start_date(2) + p1-1;
0035 if y_start_date(2) > M_.freq
0036 y_start_date(2) = y_start_date(2) - M_.freq;
0037 y1 = y1 + 1;
0038 end
0039 y_start_date(1) = M_.start_date(1)+y1;
0040
0041 y1 = floor((period-M_.maximum_lag)/M_.freq);
0042 p1 = period-M_.maximum_lag-M_.freq*y1;
0043 ex_start_date(2) = M_.start_date(2) + p1-1;
0044 if y_start_date(2) > M_.freq
0045 ex_start_date(2) = ex_start_date(2) - M_.freq;
0046 y1 = y1 + 1;
0047 end
0048 ex_start_date(1) = M_.start_date(1)+y1;
0049
0050 clear y1, p1;
0051
0052 options_.initval_file = 1;
0053 oo_.y_simul = [];
0054 oo_.exo_simul = [];
0055
0056 for i=1:size(M_.endo_names,1)
0057 if series == 1
0058 x = eval([M_.endo_names(i,:) '(period-M_.maximum_lag:period+options_.periods+M_.maximum_lead-1);']);
0059 oo_.y_simul = [oo_.y_simul; x'];
0060 else
0061 k = strmatch(upper(M_.endo_names(i,:)),names_v,'exact');
0062 if isempty(k)
0063 error(['INITVALF: ' M_.endo_names(i,:) ' not found'])
0064 end
0065 x = data(:,k);
0066 oo_.y_simul = [oo_.y_simul; x(period-M_.maximum_lag:period+options_.periods+M_.maximum_lead-1)'];
0067 end
0068 end
0069
0070 for i=1:size(M_.exo_name,1)
0071 if series == 1
0072 x = eval([M_.exo_name(i,:) '(period-M_.maximum_lag:period+options_.periods+M_.maximum_lead-1);']);
0073 oo_.exo_simul = [oo_.exo_simul x];
0074 else
0075 k = strmatch(upper(M_.exo_name(i,:)),names_v,'exact');
0076 if isempty(k)
0077 error(['INITVALF: ' M_.exo_name(i,:) ' not found'])
0078 end
0079 x = data(:,k);
0080 oo_.exo_simul = [oo_.exo_simul x(period-M_.maximum_lag:period+options_.periods+M_.maximum_lead-1)];
0081 end
0082 end
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103