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

1 view (last 30 days)
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');

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 11 Aug 2011
This is expected behavior. 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. However, this changes the filter specification and will return different values for the coefficients.

More Answers (0)

Products


Release

R2010a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!