我正在尝试fvtool
在 Matlab (2011a) 中使用函数。
这是一个由许多功能组成的交互式“工具”。我的代码是这样的:
%fs1=256; fs2=64; fs3=32;
b1 = fir1(52,0.25,kaiser(53,7.85726));
b2 = fir1(40,0.5,kaiser(41,7.85726));
b3 = fir1(204,0.5,kaiser(205,10.0613));
fvtool(b1,1,b2,1,b3,1);
这会产生:
现在我进入“分析”菜单并选择“采样频率”,然后输入采样频率。对于每个过滤器。结果是:
不是很好,因为第二个和第三个过滤器的响应是重复的。第一个滤波器的响应很好,从 0 到 256/2=128 Hz。我想让第二个和第三个过滤器的响应达到 64/2=32 和 32/2=16。分别。
所以我试着手动做,
%Digital filter:
fs1=256; fs2=64; fs3=32;
b1 = fir1(52,0.25,kaiser(53,7.85726)); b1(end+256)=0;
b2 = fir1(40,0.5,kaiser(41,7.85726)); b2(end+448)=0;
b3 = fir1(204,0.5,kaiser(205,10.0613)); b3(end+480)=0;
%Filters Response
n=1024;
w = logspace(-1,2,n);
digi_1 = freqz(b1,1,n,fs1); semilogx(w,20*log10(abs(digi_1)),'Color','k'); hold on
digi_2 = freqz(b2,1,n,fs2); semilogx(w,20*log10(abs(digi_2)),'Color','b'); hold on
digi_3 = freqz(b3,1,n,fs3); semilogx(w,20*log10(abs(digi_3)),'Color','r');
axis ([0.1 128 -140 10])
这里我使用了freqz,并给它过滤器分子和分母,加上点数n,加上采样频率。fs。问题是无论有没有采样频率,Matlab 似乎都没有做任何改变,也就是说,如果我让它没有任何改变。
因此,如果有人想提供帮助,他/她会帮助我fvtools
或使用我的手动代码,这比fvtools
.