MATLAB: Has the algorithm for fdesign changed in Signal Processing Toolbox 6.13 (R2010a) as compared to the previous versions

fdesignSignal Processing Toolbox

I am using fdesign.decimator to design an equiripple filter with given specifications. I have recently upgraded from R2007b to R2010a. In R2007b, this code output a filter with 89 coefficients, but the same code in R2010a results in a filter with 127 taps. This is breaking compatibility for my downstream code as I am using the filter and the signal output from the filter as a reference to compare with my filter code written in assembly. Compare the output generated by the following code in R2007a and R2010a:
Fpass = 3400; % Passband Frequency
Fstop = 4000; % Stopband Frequency Apass = 0.01; % Passband Ripple (dB) Astop = 80; % Stopband Attenuation (dB) Fs = 16000; % Sampling Frequency h = fdesign.decimator(2, 'Lowpass', 'fp,fst,ap,ast', Fpass, Fstop, … Apass, Astop, Fs); Hd = design(h, 'equiripple', … 'FilterStructure', 'firdecim', … 'MinPhase', true, … 'MinOrder', 'any', … 'StopbandShape', 'flat');

Best Answer

This is expected behavior. The filter designed in R2007b does not match the passband specifications very well. In Signal Processing Toolbox 6.11 (R2009a) , there was an improvement in the design of minimum order equiripple lowpass filters which involved measuring the filter response to ensure that the filter order meets the design specifications. This is causing the increment in the filter order in R2009a and later versions. As a workaround, design the filter with non-minimum order specifications thus forcing the same number of coefficients as in R2007b. This however changes the filter specification and thus will return different values for the coefficients.