MATLAB 帮助中心
模拟滤波器的频率响应
h = freqs(b,a,w)
[h,wout] = freqs(b,a,n)
freqs(___)
h = freqs(b,a,w) 返回由系数向量 b 和 a 指定的模拟滤波器在角频率 w 处计算得出的复频率响应。
h
b
a
w
示例
[h,wout] = freqs(b,a,n) 使用 n 个频率点计算 h 并在 wout 中返回对应的角频率。
wout
n
freqs(___) 不带输出参量,它在当前图窗窗口中以角频率的函数的形式绘制幅值和相位响应。您可以将此语法与上述任何一种输入语法结合使用。
全部折叠
求出并绘制传递函数的频率响应图
H(s)=0.2s2+0.3s+1s2+0.4s+1.
a = [1 0.4 1]; b = [0.2 0.3 1]; w = logspace(-1,1); h = freqs(b,a,w); mag = abs(h); phase = angle(h); phasedeg = phase*180/pi; subplot(2,1,1) loglog(w,mag) grid on xlabel('Frequency (rad/s)') ylabel('Magnitude') subplot(2,1,2) semilogx(w,phasedeg) grid on xlabel('Frequency (rad/s)') ylabel('Phase (degrees)')
您也可以调用不带输出参量的 freqs 来生成图。
freqs
figure freqs(b,a,w)
设计截止频率为 2 GHz 的五阶模拟巴特沃斯低通滤波器。乘以 2π 以将频率转换为弧度/秒。计算滤波器在 4096 个点上的频率响应。
n = 5; wc = 2*pi*2e9; w = 2*pi*1e9*logspace(-2,1,4096)'; [zb,pb,kb] = butter(n,wc,"s"); [bb,ab] = zp2tf(zb,pb,kb); [hb,wb] = freqs(bb,ab,w); gdb = -diff(unwrap(angle(hb)))./diff(wb);
设计一个具有相同边缘频率和 3 dB 通带波纹的五阶切比雪夫 I 型滤波器。计算它的频率响应。
[z1,p1,k1] = cheby1(n,3,wc,"s"); [b1,a1] = zp2tf(z1,p1,k1); [h1,w1] = freqs(b1,a1,w); gd1 = -diff(unwrap(angle(h1)))./diff(w1);
设计一个具有相同边缘频率和 30 dB 阻带衰减的 5 阶切比雪夫 II 型滤波器。计算它的频率响应。
[z2,p2,k2] = cheby2(n,30,wc,"s"); [b2,a2] = zp2tf(z2,p2,k2); [h2,w2] = freqs(b2,a2,w); gd2 = -diff(unwrap(angle(h2)))./diff(w2);
设计一个具有相同边缘频率和 3 dB 通带波纹、30 dB 阻带衰减的五阶椭圆滤波器。计算它的频率响应。
[ze,pe,ke] = ellip(n,3,30,wc,"s"); [be,ae] = zp2tf(ze,pe,ke); [he,we] = freqs(be,ae,w); gde = -diff(unwrap(angle(he)))./diff(we);
设计一个具有相同边缘频率的 5 阶贝塞尔滤波器。计算它的频率响应。
[zf,pf,kf] = besself(n,wc); [bf,af] = zp2tf(zf,pf,kf); [hf,wf] = freqs(bf,af,w); gdf = -diff(unwrap(angle(hf)))./diff(wf);
对衰减绘图,以分贝为单位。以千兆赫为单位表示频率。比较滤波器。
fGHz = [wb w1 w2 we wf]/(2e9*pi); plot(fGHz,mag2db(abs([hb h1 h2 he hf]))) axis([0 5 -45 5]) grid on xlabel("Frequency (GHz)") ylabel("Attenuation (dB)") legend(["butter" "cheby1" "cheby2" "ellip" "besself"])
绘制采样中的群延迟。以千兆赫表示频率,以纳秒表示群延迟。比较滤波器。
gdns = [gdb gd1 gd2 gde gdf]*1e9; gdns(gdns<0) = NaN; loglog(fGHz(2:end,:),gdns) grid on xlabel("Frequency (GHz)") ylabel("Group delay (ns)") legend(["butter" "cheby1" "cheby2" "ellip" "besself"])
巴特沃斯和切比雪夫 II 型滤波器具有平坦的通带和宽过渡带。切比雪夫 I 型和椭圆滤波器滚降更快,但有通带波纹。切比雪夫 II 型设计函数的频率输入设置阻带的起点,而不是通带的终点。贝塞尔滤波器沿通带具有大致恒定的群延迟。
设计一个五阶模拟低通贝塞尔滤波器,其群延迟在频率达到 104 弧度/秒前大致恒定。使用 freqs 绘制该滤波器的频率响应。
[b,a] = besself(5,10000); % Bessel analog filter design freqs(b,a) % Plot frequency response
传递函数系数,指定为向量。b 包含分子系数,a 包含分母系数。
示例: [b,a] = butter(5,50,'s') 指定一个截止频率为 50 弧度/秒的五阶巴特沃斯滤波器。
[b,a] = butter(5,50,'s')
数据类型: single | double
single
double
角频率,指定为以弧度/秒为单位的正实数向量。
示例: 2*pi*logspace(6,9) 指定了 50 个以对数间距分布的角频率,范围从 1 MHz(2π × 106 弧度/秒)到 1 GHz(2π × 109 弧度/秒)。
2*pi*logspace(6,9)
计算点数,指定为正整数标量。
频率响应,以向量形式返回。
计算 h 时所处的角频率,以向量形式返回。
freqs 返回由 b 和 a 指定的一个模拟滤波器的复频率响应。该函数计算虚轴上频率点 s = jω 处拉普拉斯变换多项式
H(s)=B(s)A(s)=b(1)sn+b(2)sn−1+⋯+b(n+1)a(1)sm+a(2)sm−1+⋯+a(m+1)
的比值:
s = 1j*w; h = polyval(b,s)./polyval(a,s);
在 R2006a 之前推出
abs | angle | freqz | invfreqs | logspace | polyval
abs
angle
freqz
invfreqs
logspace
polyval
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处