HolySaint 发表于 2008-5-14 15:43

这个滤波器怎么求带宽呢?

1-4/z^16+6/z^32-4/z^48+1/z^64
-------------------------------------------------------
         1-4/z+6/z^2-4/z^3+1/z^4

可以从图中看出来吗?

songzy41 发表于 2008-5-14 18:53

一般对低通滤波器,带宽都是指比最大值下降3分贝处的频率。所以对楼主的滤波器可以先用最大值(0Hz处)归一,找出-3dB的频率,即是该滤波器的带宽。

HolySaint 发表于 2008-5-14 21:34

这个是梳状滤波器的图
是按照多个带通的算还是怎么算?
只知道那个传递函数就可以算出来吧?

按楼上的算法是算到最后下降得还是第一次下降的呢?

yangzj 发表于 2008-5-15 12:08

回复 3楼 的帖子

如果0频是x dB的话,找x-3 dB对应的值就是了.
-3 dB的点就只一个,后面的峰远不只降3 dB了

HolySaint 发表于 2008-5-15 12:42

本帖最后由 wdhd 于 2016-9-10 14:10 编辑

原帖由 yangzj 于 2008-5-15 12:08 发表
如果0频是x dB的话,找x-3 dB对应的值就是了.
-3 dB的点就只一个,后面的峰远不只降3 dB了
还有就是那个横轴的单位怎么读呢??
x*2*piHz??

HolySaint 发表于 2008-5-15 13:43

补充一下

这个是一个四阶的积分器,进行16倍下采样,在经过四阶差分器,最后输出

这个就是整个过程的传递函数

songzy41 发表于 2008-5-15 16:37

本帖最后由 wdhd 于 2016-9-10 14:11 编辑

原帖由 HolySaint 于 2008-5-15 12:42 发表

还有就是那个横轴的单位怎么读呢??
x*2*piHz??
横轴是圆频率,单位是弧度/秒。楼主标出的rad/sample,好象不对,应为rad/second。

HolySaint 发表于 2008-5-15 16:52

本帖最后由 wdhd 于 2016-9-10 14:11 编辑

原帖由 songzy41 于 2008-5-15 16:37 发表

横轴是圆频率,单位是弧度/秒。楼主标出的rad/sample,好象不对,应为rad/second。
我的输入信号的采样是1024个点

t=0:1023;%点数

%%--------取样测试--------%%

%d0=fix((sin(2*pi*t/512)+abs(wgn(1,length(t),1))+1)*10000);

%d0=fix((sin(2*pi*t/512)+1)*10000);

d0=fix((sin(2*pi*t/512)+square(t*2*pi/12,0.5)+2)*10000);

%%--------画图比较--------%%

plot(d0);

title('周期取点数256');

%%--------转换数制--------%%

for i=1:1024

    b=dec2bin(d0(i),16);

    bout(i,:)=b;

end;

%%--------写入文本--------%%

fid = fopen('input.txt','wt');

for j=1:1024

    fprintf(fid,'%s\n',bout(j,:));

end;

fclose(fid);

主要是我想证实一下这个滤波器的带宽是否大于24kHz??

需要把输入改成24k的信号,,看结果吗??

yangzj 发表于 2008-5-15 16:54

图中是归一化的频率,1对应采样频率的一半.

HolySaint 发表于 2008-5-15 17:12

我这个滤波器使用verilog写的
他的传函如一楼
输入时matlab那个程序生成的
我想验证带宽大于24k

我的输入要怎么给?
下图可以说明吗??

附下图生成信号代码
t=0:47999;%点数

t1=0:.00001:.47999;

%%--------取样测试--------%%

d0=fix((sin(2*pi*t/24000)+1)*10000);

%%--------画图比较--------%%

plot(d0);

title('周期取点数256');

%%--------转换数制--------%%

for i=1:48000

    b=dec2bin(d0(i),16);

    bout(i,:)=b;

end;

%%--------写入文本--------%%

fid = fopen('input.txt','wt');

for j=1:48000

    fprintf(fid,'%s\n',bout(j,:));

end;

fclose(fid);

[ 本帖最后由 HolySaint 于 2008-5-15 17:14 编辑 ]

HolySaint 发表于 2008-5-15 17:34

滤波前是48000个点
滤波后是3000个点~

[ 本帖最后由 eight 于 2008-5-15 21:12 编辑 ]
页: [1]
查看完整版本: 这个滤波器怎么求带宽呢?