FIR 带通滤波器设计

FIR 带通滤波器设计  %本文将针对一个含有5Hz、15Hz和30Hz的混和正弦波信号,设计一个FIR带通滤波器,%给出利用MATLAB实现的三种方法:程序设计法、FDATool设计法和SPTool设计法。参%数要求:采样频率fs=100Hz,通带下限截止频率fc1=10Hz,通带上限截止频率fc2=20Hz,过渡带宽6Hz,通阻带波动0.01…

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

 

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。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号