function b=wtsgaus(p,N) % wtsgaus: weights for gaussian filter with specified frequency response % b=wtsgaus(p,N); % Last revised 2003-3-14 % % Weights for gaussian filter with specified frequency response % Specify te wavelength for the 0.50 respons, and the length of series, get % the coefficients, or weights % %*** INPUT % % p (1 x 1)i period (years) at which filter is to have amp frequency response of 0.5 % N (1 x 1)i length of the time series (number of observations) % %*** OUTPUT % % b (1 x n)r computed weights % % %*** REFERENCES % % WMO 1966, p. 47 % %*** UW FUNCTIONS CALLED -- NONE %*** TOOLBOXES NEEDED -- stats % %*** NOTES % % Amplitude of frequency response drops to 0.50 at a wavelength of % about 6 standard deviations of the appropriate guassian curve % % N is used as an input to restict the possible filter size (number of weights) to no larger than the sample length if p>N; error(['Desired 50% period ' num2str(p) ' is greater than the sample length ' int2str(N)]); end; % Check that period of 50% response at least 5 yr if p<5; error('Period of 50% response must be at least 5 yr'); end; sigma=p/6; % Gaussian curve should have this standard deviation x=-N:N; b=normpdf(x/sigma,0,1); bmax=max(b); bkeep = b>=0.05*bmax; % keep weights at least 5% as big as central weight b=b(bkeep); b=b/sum(b); % force weights to sum to one