lowpass butterworth magnitude response

6 views (last 30 days)
Guys, im doing this matlab file for my assignment. I must have the magnitude response starts at 40db at 0khz.
My idea is that it should be 0db at 0 frequence in the magnitude response so that i can mulplify k*100 to satisfy this. But its over 200 from the start. I have no idea what to do. Please explain to me. Thank you

Accepted Answer

Paul on 18 Dec 2022
Hi Võ
The zp2sos command in the code returns a second output, g, which is a gain that has to be applied to the filter response.
Here is the code
Fs = 44100; %tan so lay mau
Fn = Fs/2;
Wp = 2500/Fn; %tan so bien dai thong
Ws = 4000/Fn; %tan so biet dai chan
Rp = 3; %do loi dai thong
Rs = 55; %do loi dai chan
%thiet ke va tim bac bo loc
[n,Wn] = buttord(Wp,Ws,Rp,Rs);
[z,p,k] = butter(n,Wn);
%ve dap ung xung cho 100 trong so
[sos,g] = zp2sos(z,p,k);
Plotting the response of the sos portion.
The value of g is
g = 1.1602e-11
which can be converted to dB, and we see that applying it to the filter would result in 0 dB gain at dc
ans = -218.7093
Alternatively, use the single output form of zp2sos the gain will be embedded in the sos, resulting in it having the expected response.
sos = zp2sos(z,p,k);
  1 Comment
Võ Trung
Võ Trung on 18 Dec 2022
it's clear to me now , thank you so much.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by