3056|1

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

分享MSP430单片机实现的FIR滤波器C语言程序 [复制链接]

#include <stdio.h>

#define FRAME        180
short int h[19] = {
    399,-296,-945,-1555,
    -1503,-285,2112,5061,
    7503,8450,7503,5061,
    2112,-285,-1503,-1555,
    -945,-296,399
};
static short int nBuff[FRAME + 20];
void LowpassFilter(short int nIn[],short int nOut[],int nLen,short int h[]);
void main()
{
    FILE *m_pInput;
    FILE *m_pOutput;
    short int input[FRAME];
    short int output[FRAME];
    int count;

    // 打开输入文件
    if((m_pInput = fopen("input.wav", "rb")) == NULL) 
    {
        return;
    }
    //打开输出文件
    if((m_pOutput = fopen("output.wav", "wb")) == NULL) 
    {
        return;
    }
    count = 0;
    while( fread(&input[0], sizeof(short int), FRAME, m_pInput) == FRAME)
    {
        printf("Frame =%d\r", count++);
        //滤波处理
        LowpassFilter(input,output,19,h);
        //将滤波后的数据写到文件里
        fwrite(output, sizeof(short int), FRAME, m_pOutput);
    }
    fclose(m_pOutput);
    fclose(m_pInput);
}
void LowpassFilter(short int nIn[],short int nOut[],int nLen,short int h[])
{
    short int i,j;
    int sum;
    //缓冲区的内容更新
    for(i = 0;i < FRAME;i++)
    {
        nBuff[i + nLen -1] = nIn[i];
    }
    //FIR滤波处理
    for(i = 0;i < FRAME;i++)
    {
        sum = 0;
        for(j = 0;j < nLen;j++)
        {
            sum += h[j] * nBuff[i - j + nLen -1];
        }
        nOut[i] = sum >> 15;
    }
    //更新缓冲区的内容
    for(i = 0;i < nLen - 1;i++)
    {
        nBuff[nLen - i - 2] = nIn[FRAME - i - 1];
    }
}

 

 

最新回复

不错看看   详情 回复 发表于 2019-10-9 09:16
 
点赞 关注

回复
举报

2618

帖子

0

TA的资源

纯净的硅(高级)

沙发
 

不错看看

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表