Why do I get different frequency response using state-space representation and transfer function
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (1)
Christoph F.
le 17 Jan 2018
Modifié(e) : Christoph F.
le 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 commentaires
Voir également
Catégories
En savoir plus sur Digital Filter Analysis dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!