大家好,又见面了,我是你们的朋友全栈君。
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。
其幅度和相位响应。如下所示:
b = fir1(48,[0.35 0.65]);
freqz(b,1,512)
实例2
加载chirp.mat。
该文件包含一个信号y,其大部分功率高于Fs / 4,或奈奎斯特频率的一半。 采样率为8192 Hz。设计一个34阶FIR高通滤波器,以衰减低于Fs / 4的信号分量。 使用0.48的截止频率和30 dB纹波的Chebyshev窗口。
load chirp
t = (0:length(y)-1)/Fs;
bhi = fir1(34,0.48,'high',chebwin(35,30));
freqz(bhi,1)
过滤信号。 显示原始和高通滤波信号。 对两个图使用相同的y轴刻度。
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)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160786.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...