yangzj 发表于 2006-5-19 12:40

带通滤波器

前面发的滤波器,有人使用有些考虑不全的地方。现重新发一个改进后的。

%带通滤波
%x-输入信号
%fs-输入信号采样频率
%M-滤波器半阶数
%fl-下截止频率
%fh-上截止频率
%xl-返回的滤波结果,其长度为原序列长度减少2M,去掉了前M和后M个不正确的点
function xl=beltfilter(x,fs,M,fl,fh)

N=length(x)-2*M;
=size(x);
if i~=1
    x=x';
end
k=1:M;
w=0.5+0.5*cos(pi*k/M);

wl=2*pi*fl/fs;
wh=2*pi*fh/fs;
h(1)=(wh-wl)/pi;
h(2:M+1)=(sin(wh*k)-sin(wl*k))./(pi*k).*w;

for k=1:N
    kk=k-1+M;
    xl(k)=x(kk+1)*h(1)+sum(h(2:M+1).*(x(kk+2:kk+M+1)+x(kk:-1:kk-M+1)));
end

if i~=1
    xl=xl';
end

wangwu1976 发表于 2008-12-2 21:24

今天试 过了您的这个滤波器,对高频滤波效果很好,但对低频几乎没什么作用,不知道怎么回事,还请您指教

科技在线 发表于 2008-12-2 22:05

回复 板凳 wangwu1976 的帖子

本来滤波的范围就是有限的

小黑 发表于 2008-12-8 15:07

这个程序怎么用?

不亦乐乎 发表于 2008-12-15 21:42

原帖由 科技在线 于 2008-12-2 22:05 发表 http://www.chinavib.com/forum/images/common/back.gif
本来滤波的范围就是有限的
没看懂,人家不是带通滤波吗?

Jnny_CN 发表于 2009-3-19 14:27

今天用了一下,感觉很好,谢谢

请问哪位高手能够帮忙把楼主的程序改写为C语言呢?
我弄了半天不得要领,谢谢

[ 本帖最后由 ChaChing 于 2009-3-20 14:16 编辑 ]

Jnny_CN 发表于 2009-3-20 13:28

有个问题:您这个滤波器在通带内的衰减系数不为1,按理说在通带内信号应该不衰减才对阿

参数如下
fs=20000;
fl=900;
fh=1100;
M=50;

希望楼主能帮忙看下

Jnny_CN 发表于 2009-3-20 13:36

在上个采样频率40K的2k正弦波的数据对比

带通后衰减得非常厉害

fs=40000;
fl=1900;
fh=2100;
M=50;

[ 本帖最后由 Jnny_CN 于 2009-3-20 13:41 编辑 ]

purplejack 发表于 2009-12-9 18:58

没有用matlab中自带的滤波器函数,厉害

太阳vib 发表于 2012-7-24 17:54

弱弱的问一下,带通滤波和高通滤波有什么区别么???{:{10}:}
页: [1]
查看完整版本: 带通滤波器