前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MATLAB函数fir1「建议收藏」

MATLAB函数fir1「建议收藏」

作者头像
全栈程序员站长
发布2022-09-13 16:17:01
1.8K0
发布2022-09-13 16:17:01
举报
文章被收录于专栏:全栈程序员必看

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

fir1

基于窗函数的fir滤波器设计;

主要形式:

b = fir1(n,Wn)

b = fir1(n,Wn,ftype)

b = fir1(___,window)

b = fir1(___,scaleopt)

系数的含义

n — 滤波器阶数。

Wn — 截止频率, 0≤Wn≤1,

Wn=1 对应于采样频率的一半。

数字角频率w、模拟角频率Ω之间的关系为 w=Ω/Fs,所以 w = 2*pi*f/Fs ,f为模拟频率;

例如截止频率为300HZ,采样频率为1000HZ,(这里的频率都是模拟频率)换算成数字角频率为 截止频率为 0.6pi rad/sample 而Wn就是0.6;

当设计带通和带阻滤波器时, Wn=[W1 W2],W1≤ω≤W2。

ftype — 当指定 ftype 时,可设计高通和带阻滤波器。ftype = high 时,设计高通 FIR 滤波器;

ftype=stop 时设计带阻 FIR 滤波器。低通和带通 FIR滤波器无需输入 ftype 参数。

Window — 窗函数。窗函数的长度应等于FIR 滤波器系数个数,即阶数 n+1。

n — 滤波器阶数,默认为汉明窗。

b为生成的滤波器系数,、。

解释:

b = fir1(n,Wn)使用汉明窗来设计具有线性相位的n阶低通,带通或多频FIR滤波器。滤波器类型取决于Wn的元素数量。

b = fir1(n,Wn,ftype)设计低通,高通,带通,带阻或多频带滤波器,取决于ftype的值和Wn的元素数量。

b = fir1(___,window)使用window中指定的向量和先前语法中的任何参数设计过滤器。

b = fir1(___,scaleopt)另外指定滤波器的幅度响应是否被归一化。

注意:对于具有任意频率响应的窗口滤波器,请使用fir2。

设计一个48阶FIR带通滤波器,通带为0.35π≤ω≤0.65π rad/ sample。 其幅度和相位响应。如下所示:

代码语言:javascript
复制
b = fir1(48,[0.35 0.65]);
freqz(b,1,512)
MATLAB函数fir1「建议收藏」
MATLAB函数fir1「建议收藏」

实例2

加载chirp.mat。 该文件包含一个信号y,其大部分功率高于Fs / 4,或奈奎斯特频率的一半。 采样率为8192 Hz。设计一个34阶FIR高通滤波器,以衰减低于Fs / 4的信号分量。 使用0.48的截止频率和30 dB纹波的Chebyshev窗口。

代码语言:javascript
复制
load chirp

t = (0:length(y)-1)/Fs;

bhi = fir1(34,0.48,'high',chebwin(35,30));
freqz(bhi,1)
MATLAB函数fir1「建议收藏」
MATLAB函数fir1「建议收藏」

过滤信号。 显示原始和高通滤波信号。 对两个图使用相同的y轴刻度。

代码语言:javascript
复制
outhi = filter(bhi,1,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outhi)
title('Highpass Filtered Signal')
xlabel('Time (s)')
ylim(ys)
MATLAB函数fir1「建议收藏」
MATLAB函数fir1「建议收藏」

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

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

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

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

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

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