sosfit in filter function

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

sosfit in filter function

yamane
Hi,

There is a numerical instability on butter function, as described in https://www.mathworks.com/help/signal/ref/butter.html (topic "Limitations").

Is recommend use [z, p, k] syntax and sosfilt function to apply a second-order section filter, as described in https://savannah.gnu.org/bugs/?53855

But, the documentation of SOSFILT is not clear: https://octave.sourceforge.io/signal/function/sosfilt.html

Someone have an idea about how to use ZPK Design instead a TF Design in this code below?

+++++++++++++
n = 5;
hpf = 50;
lpf = 10*hpf;
sampling_rate = 44100;

typenoise = noise(60*sampling_rate, 1, 'pink');
[b,a] = butter(n, [hpf/(sampling_rate/2), lpf/(sampling_rate/2)]);
filtered = filter(b, a, typenoise);
audiowrite (filename.wav, filtered, sampling_rate);

freqz (b, a, 4096, sampling_rate)
ax = findall (gcf, 'type', 'axes');
set (ax, 'xlim', [hpf/4 lpf*4]);
set (ax, 'xscale', 'log');
subplot (2, 1, 1);
set (gca, 'ylim', [-35 3]);
-----------------------------

Best regards,
Renato