function [Myrqm,nMyrqm] = fn_calyrqm(q_m,Byrqm,Eyrqm) % [Myrqm,nMyrqm] = fn_calyrqm(q_m,Byrqm,Eyrqm) % % Given the beginning and end years and quarters (months), export a matrix of all years and % quarters (months) for these years and in between % % q_m: 4 if quarterly and 12 if monthly % Byrqm: [year quarter(month)] -- all integers, the begining year and quarter (month) % Eyrqm: [year quarter(month)] -- all integers, the end year and quarter (month) %------------------- % Myrqm: matrix of all years and quarters (months) between and incl. Byrqm and Eyrqm % nMyrqm: number of data points incl. Byrqm and Eyrqm % % Tao Zha, April 2000 if ~isempty(find(Byrqm-round(Byrqm))) | (q_m-round(q_m)) | ~isempty(find(Byrqm-round(Byrqm))) error('argin qm, Byrqm, or Eyrqm must of integer') elseif Byrqm(1)>Eyrqm(1) error('Eyrqm(1) must be equal to or greater than Byrqm(1)') elseif Byrqm(1)==Eyrqm(1) if Byrqm(2)>Eyrqm(2) error('Eyrqm(2) must be equal to or greater than Byrqm(2) because of the same year') end end Yr = Byrqm(1)+[0:Eyrqm(1)-Byrqm(1)]'; if length(Yr)>=2 % there are years and quarters (months) between Byrqm and Eyrqm n=length(Yr)-2; C=zeros(n*q_m,2); C(:,1) = kron(Yr(2:end-1),ones(q_m,1)); C(:,2) = kron(ones(n,1),[1:q_m]'); %* initialize a matrix of years and quarters (months) including Byrqm and Eyrqm Myrqm = zeros((q_m-Byrqm(2)+1)+Eyrqm(2)+n*q_m,2); %* Years in between n1=q_m-Byrqm(2)+1; n2=Eyrqm(2); Myrqm(n1+1:end-n2,:) = C; %* Beginning year for k=1:n1 Myrqm(k,:) = [Byrqm(1) Byrqm(2)+k-1]; end %* End year for k=1:n2 Myrqm(end-Eyrqm(2)+k,:) = [Eyrqm(1) k]; end else %* all the data are in the same calendar year n1=Eyrqm(2)-Byrqm(2)+1; Myrqm = zeros(n1,2); for k=1:n1 Myrqm(k,:) = [Byrqm(1) Byrqm(2)+k-1]; end end nMyrqm = size(Myrqm,1);