前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FIR 带通滤波器设计

FIR 带通滤波器设计

作者头像
全栈程序员站长
发布2022-08-18 21:34:50
6530
发布2022-08-18 21:34:50
举报

大家好,又见面了,我是你们的朋友全栈君。

FIR 带通滤波器设计
FIR 带通滤波器设计
FIR 带通滤波器设计
FIR 带通滤波器设计

%本文将针对一个含有 5Hz 、 15Hz 和 30Hz 的混和正弦波信号, 设计一个 FIR 带通滤波器, %给出利用 MATLAB 实现的三种方法: 程序设计法、 FDATool 设计法和 SPTool 设计法。 参 %数要求:采样频率 fs=100Hz ,通带下限截止频率 fc1=10 Hz ,通带上限截止频率 fc2=20Hz ,过渡带宽 6 Hz,通阻带波动 0.01 ,采用凯塞窗设计。 fc1 =10 ; fc2 =20 ; fs=100 ; [n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],100); %得出滤波器的阶数 n=38 , beta=3.4 w1=2*fc1/fs; w2=2*fc2/fs;% 将模拟滤波器的技术指标转换为数字滤波器的技术指 window=kaiser(n+1,beta);% 使用 kaiser 窗函数 b=fir1(n,[w1 w2],window); %使用标准频率响应的加窗设计函数 fir1 freqz(b,1,512);% 数字滤波器频率响应 t = (0:100)/fs; s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);% 混和正弦波信号 sf = filter(b,1,s); %对信号 s 进行滤波

采用[n,Wn,beta,ftype] = kaiserord(f,a,dev)函数来估计滤波器阶数等,得到凯塞窗滤波器。

  这里的函数kaiserord(f,a,dev)或者kaiserord(f,a,dev,fs):

  f为对应的频率,fs为采样频率;当f用数字频率表示时,fs则不需要写。

  a=[1 0]为由f指定的各个频带上的幅值向量,一般只有0和1表示;a和f长度关系为(2*a的长度)- 2=(f的长度)

  devs=[0.05 10^(-2.5)]用于指定各个频带输出滤波器的频率响应与其期望幅值之间的最大输出误差或偏差,长度与a相等。

其中fir1(n,Wn)归一化频率的含义

Wn是一个归一化频率,在滤波器设计中是用fs/2进行归一。

在fir1滤波器设计时采用的是归一化频率。实际采样频率为fs,实际的截止频率为fc,设归一化截止频率为fcm,fcm=fc/(fs/2)。

filter函数 参考 https://blog.csdn.net/u012111020/article/details/73744234

b=fir1(n,Wn)返回截止频率为Wn的N阶FIR低通滤波系数行列向量b。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135900.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档