Why do I get different frequency response using state-space representation and transfer function
    6 views (last 30 days)
  
       Show older comments
    
After using butter function to design a filter (as follow), I wanted to check the frequency response. However I suddenly find that the frequency response seems to be different using different representation. That doesn't make sense to me. Thanks a lot for answering me.

 [Input, Fs]=audioread('input.wav');
Ws=[10 3800]/(Fs/2);
Wp=[30 3500]/(Fs/2);
[N, Wn]=buttord(Wp,Ws,0.1,30); %Design band pass filter.
[A,B,C,D]=butter(N,Wn);
sos=ss2sos(A,B,C,D);
fvtool(sos,'Fs',Fs); % Plot Freq Response using state space representation.
[b,a]=ss2tf(A,B,C,D);
fvt=fvtool(b,a,'Fs',Fs); % Plot Freq Response using Transfer Function.
Output=filter(b,a,Input);
audiowrite('output.wav',Output,Fs);
0 Comments
Answers (1)
  Christoph F.
      
 on 17 Jan 2018
        
      Edited: Christoph F.
      
 on 17 Jan 2018
  
      124th order recursive filters are iffy, numerically. At this point, the limited precision of even the double datatype can lead to erroneous behavior.
Generally: max(abs(a)) is on the order of 10^31 min(abs(a)) is on the order of 10^-9
0 Comments
See Also
Categories
				Find more on Digital Filter Analysis in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
