fir窗函数滤波c语言 窗函数设计fir滤波器的优缺点

窗函数法FIR低通数字滤波1.FIR数字滤波器原理
假设理想低通滤波器fir窗函数滤波c语言的截止频率为ωc=2πfcfir窗函数滤波c语言,且具有线性相位,群延时为a,即频率响应:
航空重力勘探理论方法及应用
表示成幅度函数和相位函数形式:
航空重力勘探理论方法及应用
则幅度函数:
航空重力勘探理论方法及应用
在通带范围|ω| ≤ωc(截止频率)内Hd(ejω)的幅度为1,相位为-ωα;对应的时间域(或空间域)滤波函数为:
航空重力勘探理论方法及应用
有限脉冲响应FIR(Finite Impulse Response)数字滤波器要求用有限长的单位冲击响应h(n)来逼近无限长的理想滤波器的单位冲击响应hd(n) , 最常用和有效的方法就是用一个有限长(长度为N)的“窗函数”序列w(n)来截取hd(n)的主要成分(陈玉东,2005):
航空重力勘探理论方法及应用
实际上是用有限长的h(n)去逼近hd(n),通过这种方式得到的频率响应H(ejω)近似于理想频率响应Hd(ejω)(在频率域内采用均方差最小准则逼近) 。按照线性相位滤波器的约束要求,h(n)必须是偶对称的,其对称中心应为它长度的一半:h(n)=h(N-1-n) , 而且
【fir窗函数滤波c语言 窗函数设计fir滤波器的优缺点】 ;所以同时要求窗函数w(n)也必须是关于中心偶对称:w(n)=w(N-1-n) 。
2.几种常见窗函数
(1)矩形窗
长度为N的矩形窗函数为:
航空重力勘探理论方法及应用
(2)三角形窗(Bartlett)
长度为N的三角形窗函数为:
航空重力勘探理论方法及应用
(3)汉宁窗(Hanning)
长度为N的汉宁窗函数为:
航空重力勘探理论方法及应用
(4)海明窗(Hamming)
为使得旁瓣更?。山耗案慕珊C鞔埃ざ任狽的海明窗函数为:
航空重力勘探理论方法及应用
(5)布拉克曼窗(Blackman)
为进一步有效抑制旁瓣 , 可以再加上余弦的二次谐波分量,得到长度为N的布拉克曼窗函数为:
航空重力勘探理论方法及应用
(6)凯泽窗(Kaiser)
长度为N的凯泽窗函数为:
航空重力勘探理论方法及应用
其中I0(x)为第一类变形零阶贝塞尔函数,α=(N-1)/2 。β是一个可自由选择的参数,它可同时调整窗函数谱主瓣宽度与旁瓣幅值;β越大,则窗函数w(n)变化越快、变得越窄,频谱旁瓣就越?。靼昕矶认嘤υ黾?。一般选择4<β<9,相当于窗函数频谱旁瓣幅度与主瓣幅度的比值由3.1%变到0.047% 。β=0时相当于矩形窗(陈玉东 , 2005) 。
3.窗函数FIR滤波器
式(7-4-3)至式(7-4-8)窗函数都满足关于中心偶对称的线性相位滤波器的约束要求 , 结合式(7-4-1)至式(7-4-2)可以得到相应窗函数的FIR低通数字滤波器函数(郭志宏,罗锋,等,2007):
航空重力勘探理论方法及应用
航空重力勘探理论方法及应用
用该滤波器窗口对时间域(或空间域)长度为M的数据序列逐点进行窗口滑动卷积求和计算(实际处理时窗口中点作为输出计算点,则一边损失半个滤波窗口数据) , 就可获得FIR滤波后的数据(郭志宏,段树岭,等,2009):
航空重力勘探理论方法及应用
h(n)为滤波器系数,x(n)、y(n)分别为输入、输出数据序列 。
4.窗函数FIR滤波试验
(1)GT-1A型航空重力数据
图7-4-1至图7-4-2分别为GT-1A型航空重力系统获得的一条原始未滤波、100 s和60 s滤波自由空间重力异常测线数据 , 其中飞机的飞行速度约60m/s,剖面图横轴为测线基准点号,基准点间距约30 m 。图7-4-1中GT-1A型系统航空原始未滤波自由空间重力测线数据的高频干扰非常之严重,噪声幅度在-5 000×10-5m·s-2至5000×10-5m·s-2的大范围内变化,而幅度通常只有(10-3~10-4)m·s-2的由密度和构造变化等地质因素引起的重力异常信号(图7-4-2)则完全淹没在高频干扰中 。图7-4-2中GT-1A型系统航空100 s、60 s滤波自由空间重力测线数据是采用GT-1A型航空重力系统自带软件模块由图7-4-1的航空原始未滤波自由空间重力测线数据获得的滤波数据,滤波后高频干扰已基本消除,油气和矿产地球物理勘查所需的重力异常则较好的显现出来 。
图7-4-1 GT-1A型航空重力系统原始未滤波自由空间重力异常
(2)几种窗函数FIR滤波试验
根据式(7-4-1)至式(7-4-10),fir窗函数滤波c语言我们研制了窗函数法FIR数字滤波计算软件,用各种窗函数FIR滤波器对图7-4-1的GT-1A航空原始未滤波自由空间重力测线数据分别进行了截止波长为100 s、60 s长度(按v=60m/s的航速计算,截止波长A 。分别为6km、3.6km,按fc=v/λc计算的截止频率分别为0.01 Hz、0.0167 Hz)的低通滤波试验计算,试验结果见图7-4-3至图7-4-8 。为了图形对比方便,各剖面图中仍然保留了测线边部两端的半个滤波窗口数据,这些数据由于存在边部效应,因而是不准确的,实际应用时应该去掉 。从试验结果图可以看到,矩形窗和三角窗FIR滤波后异常整体形状虽然也与图7-4-2类似,但其上叠加了高频扰动,尤其是矩形窗FIR滤波结果,这就是通常所说的“吉布斯”振荡效应(陈玉东,2005) 。如果在图7-4-3至图7-4-4的基础上,采用空间域非线性曲率滤波方法(郭志宏,刘浩军,等,2003),用中国国土资源航空物探遥感中心的“空中探针”系统(刘浩军,薛典军,等,2003)中的滤波软件进一步处理,则可获得消除扰动后接近图7-4-2效果的异常数据 。从汉宁窗、海明窗、布拉克曼窗以及凯泽窗FIR滤波试验结果看到,通过选择合适的窗口长度、截至波长等滤波参数 , 基本都获得了令人满意的效果 。
图7-4-2 GT-1A型航空重力系统100s、60s滤波自由空间重力异常
图7-4-3 矩形窗FIR低通滤波截止波长100s、60s航空自由空间重力异常
表7-4-1为图7-4-3至图7-4-8所示的各种窗函数FIR低通滤波截止波长100 s、60 s长度航空自由空间重力异常与图7-4-2所示的GT-1A型航空重力系统100 s、60 s滤波自由空间重力异常(作为标准)的比较,通过两者之差值的统计结果来衡量吻合程度 。从统计表中可以看到,除了矩形窗、三角窗外,其fir窗函数滤波c语言他几种窗函数FIR低通滤波结果的差异值都在±1×10-5m·s-2以内 , 均方差值则多数为0.3×10-5m·s-2左右 , 可见吻合程度还是比较好的 。
图7-4-4 三角窗FIR低通滤波截止波长100s、60s航空自由空间重力异常
5.结论
1)通过选择合适的窗形、窗口长度、滤波参数,窗函数法FIR低通数字滤波器可以在航空重力数据的滤波处理中发挥应有的作用 。
图7-4-5 汉宁窗FIR低通滤波截止波长100s、60s航空自由空间重力异常
图7-4-6 海明窗FIR低通滤波截止波长100s、60s航空自由空间重力异常
图7-4-7 布拉克曼窗FIR低通滤波截止波长100s、60s航空自由空间重力异常
图7-4-8 凯泽窗(β=6)FIR低通滤波截止波长100s、60s航空自由空间重力异常
2)为了获得与GT-1A型航空重力系统100 s、60 s低通滤波(60m/s航速)对应的自由空间重力测线数据,所选择汉宁、海明、布拉克曼、凯泽窗的长度通常为400点(2 Hz采样率),FIR低通滤波对应的截止频率分别为0.01 Hz、0.0167 Hz 。
3)窗函数法不但可以设计FIR低通滤波器,还可设计FIR高通、带通、带阻滤波器等 。通常一个高通滤波器相当于一个全通滤波器减去一个低通滤波器;一个带通滤波器相当于两个低通滤波器相减;而一个带阻滤波器相当于一个低通滤波器加上一个高通滤波器 。
表7-4-1 窗函数FIR滤波试验结果与GT-1A系统滤波结果的差值统计
4)除了窗函数法FIR低通滤波器,其他诸如等波纹法FIR低通滤波器、无限脉冲响应IIR低通滤波、Kalman滤波等方法(周坚鑫,刘浩军,等,2001;陈玉东,2005)均可用于航空重力数据的低通数字滤波处理中 。
请简述窗函数法设计FIR数字滤波器的方法与步骤 。滤波器fir窗函数滤波c语言的理想频率响应函数为Hd(ejω)fir窗函数滤波c语言,则其对应的单位脉冲响应为hd(n)=窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼hd(n) 。由于hd(n)往往是无限长序列,且是非因果的,所以用窗函数 。w(n)将hd(n)截断 , 并进行加权处理fir窗函数滤波c语言:
h(n)=hd(n)w(n)h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数H(ejω)为H(ejω)=用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N的取值 。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。
一般都选用Ⅰ型线性相位滤波器即滤波器阶数M为偶数,程序如下:
wp=;ws=;Ap=1;As=100;
dev=[Rp Rs];
[M,wc,beta,ftype]=kaiserord(f,a,dev);
M=mod(M,2) M;
plot(omega/pi,20*log10(abs(mag)));
运行程序可以得到滤波器的通阻带衰减,画出频率响应,若同阻带衰减不满足要求还可以使用滤波器的优化 , 一般使用的等波纹FIR进行优化 。
扩展资料:
滤波器与机箱之间的一段连线会产生两种不良作用: 一个是机箱内部空间的电磁干扰会直接感应到这段线上,沿着电缆传出机箱,借助电缆辐射,使滤波器失效fir窗函数滤波c语言;另一个是外界干扰在被板上滤波器滤波之前 , 借助这段线产生辐射,或直接与线路板上的电路发生耦合,造成敏感度问题;
滤波阵列板、滤波连接器等面板滤波器一般都直接安装在屏蔽机箱的金属面板上 。由于直接安装在金属面板上,滤波器的输入与输出之间完全隔离,接地良好,电缆上的干扰在机箱端口上被滤除,因此滤波效果相当理想 。
参考资料来源:百度百科-滤波器
如何用C#实现FIR低通滤波器这个我刚好做过一个滤波器,事实上对时域信号做FFT,截取一定点数再做逆FFT相当于理想滤波 。设计滤波器代码如下:
f1=100;f2=200;%待滤波正弦信号频率
fs=2000;%采样频率
m=(0.3*f1)/(fs/2);%定义过度带宽
M=round(8/m);%定义窗函数的长度
N=M-1;%定义滤波器的阶数
b=fir1(N,f2/fs);%使用fir1函数设计滤波器
%输入的参数分别是滤波器的阶数和截止频率
figure(1)
[h,f]=freqz(b,1,512);%滤波器的幅频特性图
%[H,W]=freqz(B,A,N)当N是一个整数时函数返回N点的频率向量和幅频响应向量
plot(f*fs/(2*pi),20*log10(abs(h)))%参数分别是频率与幅值
xlabel('频率/赫兹');ylabel('增益/分贝');title('滤波器的增益响应');
figure(2)
subplot(211)
t=0:1/fs:0.5;%定义时间范围和步长
s=sin(2*pi*f1*t) sin(2*pi*f2*t);%滤波前信号
plot(t,s);%滤波前的信号图像
xlabel('时间/秒');ylabel('幅度');title('信号滤波前时域图');
subplot(212)
Fs=fft(s,512);%将信号变换到频域
AFs=abs(Fs);%信号频域图的幅值
f=(0:255)*fs/512;%频率采样
plot(f,AFs(1:256));%滤波前的信号频域图
xlabel('频率/赫兹');ylabel('幅度');title('信号滤波前频域图');
figure(3)
sf=filter(b,1,s);%使用filter函数对信号进行滤波
%参数分别为滤波器系统函数的分子和分母多项式系数向量和待滤波信号输入
subplot(211)
plot(t,sf)%滤波后的信号图像
xlabel('时间/秒');ylabel('幅度');title('信号滤波后时域图');
axis([0.2 0.5 -2 2]);%限定图像坐标范围
subplot(212)
Fsf=fft(sf,512);%滤波后的信号频域图
AFsf=abs(Fsf);%信号频域图的幅值
f=(0:255)*fs/512;%频率采样
plot(f,AFsf(1:256))%滤波后的信号频域图
xlabel('频率/赫兹');ylabel('幅度');title('信号滤波后频域图');
求:一个关于FIR带通滤波器的C语言设计程序 代码short h[], short y[])
{
int i, j, sum;for (j = 0; j100; j) {
sum = 0;
for (i = 0; i32; i)
sum= x[i j] * h[i];
y[j] = sum15;
}
}
2
void fir(short x[], short h[], short y[])
{
int i, j, sum0, sum1;
short x0,x1,h0,h1;for (j = 0; j100; j =2) {
sum0 = 0;
sum1 = 0;
x0 = x[j];
for (i = 0; i32; i =2){
x1 = x[j i 1];
h0 = h[i];
sum0= x0 * h0;
sum1= x1 * h0;
x0 = x[j i 2];
h1 = h[i 1];
sum0= x1 * h1;
sum1= x0 * h1;
}
y[j] = sum015;
y[j 1] = sum115;
}
}
3
void fir(short x[], short h[], short y[])
{
int i, j, sum0, sum1;
short x0,x1,x2,x3,x4,x5,x6,x7,h0,h1,h2,h3,h4,h5,h6,h7;for (j = 0; j100; j =2) {
sum0 = 0;
sum1 = 0;
x0 = x[j];
for (i = 0; i32; i =8){
x1 = x[j i 1];
h0 = h[i];
sum0= x0 * h0;
sum1= x1 * h0;
x2 = x[j i 2];
h1 = h[i 1];
sum0= x1 * h1;
sum1= x2 * h1;
x3 = x[j i 3];
h2 = h[i 2];
sum0= x2 * h2;
sum1= x3 * h2;
x4 = x[j i 4];
h3 = h[i 3];
sum0= x3 * h3;
sum1= x4 * h3;
x5 = x[j i 5];
h4 = h[i 4];
sum0= x4 * h4;
sum1= x5 * h4;
x6 = x[j i 6];
h5 = h[i 5];
sum0= x5 * h5;
sum1= x6 * h5;
x7 = x[j i 7];
h6 = h[i 6];
sum0= x6 * h6;
sum1= x7 * h6;
x0 = x[j i 8];
h7 = h[i 7];
sum0= x7 * h7;
sum1= x0 * h7;
}
y[j] = sum015;
y[j 1] = sum115;
}
}
求IIR及FIR数字滤波器的C语言实现 。(VC)这个问题比较复杂fir窗函数滤波c语言,最近本人也在研究数字滤波fir窗函数滤波c语言 ,
结合图片说一下
第一个图是firfir窗函数滤波c语言的流程图,其中Z-1是延迟 , 是单个采样时间1/fs
n阶的fir滤波器就是选取最近的n 1个样本,然后使fir窗函数滤波c语言他们各自乘以自己的滤波器系数即图中的F(n),[一般其他书的表示是h(n)]
然后相加得到输出的y(n)就是一个输出点
, 其中F(n)的得出需要根据采样频率和滤波器的通带和阻带来决定
其中为了改善旁瓣的幅值 , 一般在采样后给样本或者h(n)加窗 , 当然可以用“最佳方法”来做
得出h(n)大致方法是先将矩形窗进行DFT,得出h(n),然后对h(n)进行加窗得出h(k),然后将∑h(k)×x(n)=y(n),假如阶数较多可以用傅里叶变换使时域变频域后再将卷积相加 , 可以利用FFT来改进实时性,提升速度
上面就是fir滤波器的简述
第二个图片上传不了,直接给链接
;amp;z=0tn=baiduimagedetailword=一阶iir滤波器in=12708cl=2cm=1sc=0lm=-1pn=0rn=1di=2607528304ln=1054fr=
图中的Z-1是延时,iir滤波器也叫无限冲击响应滤波器,是有反馈的 ,
图中的是一阶的,相对fir滤波器来说,iir滤波器可以用较低的阶数来获得较好的滤波特效 。但是其相位特性较差 。
鉴于实用性,还是建议楼主去图书馆借书看 , 百度不可能得到确实的方案,
楼主可以去借“数字信号处理”的书,国外的中译本就有详细介绍fir和iir以及fft还有其他变换 , 国内的dsp大都几乎是dsp用户手册的中译本,对上述问题都是很简陋地带过,不予置评 。
本人推荐一本书在上面的dsp专栏有下载 , 40多M,叫DSP算法、应用和设计,本人有这本实体书,写的较好
关于fir窗函数滤波c语言和窗函数设计fir滤波器的优缺点的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读