Why does the BUTTER function return different results for Signal Processing Toolbox 4.3 and 5.0?

2 views (last 30 days)
Why does the BUTTER function return different results for Signal Processing Toolbox versions 4.3 (R11.1) and 5.0 (R12) on my PC?
For example:
samplingrate=500;
lowend=.1;
highend=10;
Wn=[lowend highend]/(samplingrate/2);
[b a]=butter(8,Wn);
The value of the zeros vector 'b' returned by the BUTTER function is different for R11.1 and R12. I am confused as to which answer is correct.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 27 Jun 2009
The answers in both versions are equally good answers. In R12.x and R13 on the PC, the answer is significantly different from that in R11. However, the R12.x and R13 answers on PC are the same as the R11, R12.x and R13 answers on Unix, down to the last bit. This is because the MATLAB computations underlying the BUTTER function uses a different number of bits to store the intermediate values.
Please modify your code as shown below, to obtain the same results for all versions of MATLAB:
samplingrate=500;
lowend=.1;
highend=10;
Wn=[lowend highend]/(samplingrate/2);
% This avoids the piece of code which is generating slightly different
% coefficients between the two versions of MATLAB.
[z,p,k]=butter(8,Wn);
[SOS,G] = zp2sos(z,p,k);
[b,a] = sos2tf(SOS,G);

More Answers (0)

Community Treasure Hunt

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

Start Hunting!