24小时热门版块排行榜    

查看: 1006  |  回复: 1
【奖励】 本帖被评价1次,作者baobiao007增加金币 0.8

baobiao007

木虫 (职业作家)


[资源] 【分享】频率域镶边法带通滤波c程序【原创】

#include
#include
#include
#include"FFT.h"
//效果似乎不如时域褶积法
/*构建镶边带通滤波器
  f0--通频带中心频率
  hf--通频带半宽度
  num-滤波器长度
  df--频率采样间隔
*/
void Filter(float h[],int num,float f0,float hf,float df)
{
        int i;
        double pi=3.1415926;
        float bf=hf;//镶边宽度
        float f1,f2,f3,f4,f;
        f2=f0-hf; f3=f0+hf;
        f1=f2-bf; f4=f3+bf;
        for(i=0; i<=num/2; i++)
        {
                f=i*df;
                if(f                 else if(f>=f1 && f<=f2)
                        h[ i ]=pow(sin(pi*(f-f1)/(2.0*(f2-f1))),2);
                else if(f>f2 && f                         h[ i ]=1.0;
                else if(f>=f3 && f<=f4)
                        h[ i ]=pow(sin(pi*(f-f4)/(2.0*(f4-f3))),2);
                else
                        h[ i ]=0.0;
        }
        for(i=num/2+1; i                 h[ i ]=h[num-i];
}

void main()
{
        const int M=128;//滤波器长度
        float dt=0.002;//时间采样间隔
        float df=1.0/(M*dt);//频率采样间隔
        float Inisigr[M]={0};//要滤波的信号
        float Inisigi[M]={0};
        float Afsig2r[M]={0};//滤波后的信号
        float Afsig2i[M]={0};
        float Afsig[M]={0};//理想情况下滤波后的信号
        float hr[M],hi[M];//滤波器频谱
        int i,k;
        k=(int)(log(M)/log(2.0)+0.5);
        FILE *fp1,*fp2,*fp3;
        fp1=fopen("inisig.txt","w" );//合成信号
         fp2=fopen("afsig.txt","w" );//理想50hz信号
        fp3=fopen("afsig2.txt","w" );//滤波得到的50hz信号

        //产生信号,20hz,50hz,80hz正弦信号叠加
    double pi=3.1415926;
        float f1,f2,f3;
        f1=20.0;
        f2=50.0;
        f3=80.0;
        for(i=0; i         {        Afsig[ i ]=sin(2*pi*f2*dt*i);
                Inisigr[ i ]=Afsig[ i ]+sin(2*pi*f1*i*dt)+sin(2*pi*i*f3*dt);
                               fprintf(fp1,"%f\n",Inisigr[ i ] );
        }

        //形成滤波器
        Filter(hr,M,50.0,10.0,df);
        //对要滤波的信号进行FFT
        fft(Inisigr,Inisigi,k,1);
    //频谱相乘,滤去低于40hz高于60hz的信号
        for(i=0; i         {
                Afsig2r[ i ]=hr[ i ]*Inisigr[ i ];
                Afsig2i[ i ]=Inisigi[ i ]*hr[ i ];
        }
        //FFT反变换
        fft(Afsig2r,Afsig2i,k,-1);

        //输出结果
         for(i=0; i         {               
                       fprintf(fp2,"%f\n",Afsig[ i ]);
                       fprintf(fp3,"%f\n",Afsig2r[ i ]);
        }
                fclose(fp1);
        fclose(fp2);
        fclose(fp3);

}
滤波前:
滤波后:

[ Last edited by baobiao007 on 2011-2-14 at 22:55 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

w1161392713

新虫 (初入文坛)


★★★★★ 五星级,优秀推荐

请问有没有这个快速傅里叶变换的头文件FFT.h?
2楼2017-05-20 13:45:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 baobiao007 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +7 Lanmanbaby 2026-08-09 11/550 2026-08-09 17:48 by zhanghaozhu
[基金申请] 这样的filecode谁见过 +10 布布和一二 2026-08-08 21/1050 2026-08-09 17:21 by 天神眷顾
[基金申请] 关于代码变化问题,想知道的进来 +13 且听虎啸 2026-08-07 17/850 2026-08-09 15:08 by 天神眷顾
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 Vi50GxzrFcSG 2026-08-07 4/200 2026-08-08 16:22 by oEVWOejN9taj
[博后之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 Vi50GxzrFcSG 2026-08-07 4/200 2026-08-08 16:02 by oEVWOejN9taj
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 Vi50GxzrFcSG 2026-08-07 5/250 2026-08-08 15:59 by oEVWOejN9taj
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 WQyTGMbfH7Cx 2026-08-07 4/200 2026-08-08 15:02 by oEVWOejN9taj
[博后之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 HEQlVqMTIA7d 2026-08-07 6/300 2026-08-08 14:42 by oEVWOejN9taj
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +4 HEQlVqMTIA7d 2026-08-07 5/250 2026-08-08 14:27 by oEVWOejN9taj
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 HEQlVqMTIA7d 2026-08-07 5/250 2026-08-08 14:22 by oEVWOejN9taj
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 HEQlVqMTIA7d 2026-08-07 3/150 2026-08-08 03:47 by 6vVgjDL4CnGu
[基金申请] 娱乐 +6 Tide man 2026-08-03 6/300 2026-08-07 22:40 by 铁帽子农民
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见