% error: [n, Wn, beta, ftype] = kaiserord(f, m, dev [, fs]) % % Returns the parameters needed for fir1 to produce a filter of the % desired specification from a kaiser window: % n: order of the filter (length of filter minus 1) % Wn: band edges for use in fir1 % beta: parameter for kaiser window of length n+1 % ftype: choose between pass and stop bands % b = fir1(n,Wn,kaiser(n+1,beta),ftype,'noscale'); % % f: frequency bands, given as pairs, with the first half of the % first pair assumed to start at 0 and the last half of the last % pair assumed to end at 1. It is important to separate the % band edges, since narrow transition regions require large order % filters. % m: magnitude within each band. Should be non-zero for pass band % and zero for stop band. All passbands must have the same % magnitude, or you will get the error that pass and stop bands % must be strictly alternating. % dev: deviation within each band. Since all bands in the resulting % filter have the same deviation, only the minimum deviation is % used. In this version, a single scalar will work just as well. % fs: sampling rate. Used to convert the frequency specification into % the [0, 1], where 1 corresponds to the Nyquist frequency, fs/2. % % The Kaiser window parameters n and beta are computed from the % relation between ripple (A=-20*log10(dev)) and transition width % (dw in radians) discovered empirically by Kaiser: % % / 0.1102(A-8.7) A > 50 % beta = | 0.5842(A-21)^0.4 + 0.07886(A-21) 21 <= A <= 50 % \ 0.0 A < 21 % % n = (A-8)/(2.285 dw) % % Example % [n, w, beta, ftype] = kaiserord([1000,1200], [1,0], [0.05,0.05], 11025); % freqz(fir1(n,w,kaiser(n+1,beta),ftype,'noscale'),1,[],11025);