• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

直接型FIR滤波器的C语言实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

 

<span style="color:red"> This blog is out of date. Check out my new blog holder: <a href='https://sonictl.github.io'>sonictl.github.io</a></span>

 

<span style="color:red"> 本网站上的博文已经停止维护/更新了。 请移步到新的博客空间:<a href='https://sonictl.github.io'>sonictl.github.io</a></span>

 

 

直接型FIR滤波器的C语言实现

  

设输入数据x[N],输出数据y[N],滤波器系数h[n]

1.直接法(由y(m)=h(0)*x(m)+h(1)*x(m-1)+...+h(N-1)*x(m-n-1));

void fir(short x[], short h[], short y[])
{
  int i,j;
  long long sum;  
 
  for (j = 0; j < N; j++)
  {
    sum = 0;
    for (i = 0; i < n; i++)
      sum += x[j-i] * h[i];
    y[j] = sum >> 15;
  }
}

乘法器使用次数:N*n

 

2.逆推法:

void fir(short x[], short h[], short y[])
{
  int i,j;
  long sum;  
 
  for (j = 0; j < n; j++)
  {
    for (i = 0; i < N; i++)
    {
      sum = 0;
      sum = h[j] * x[i]
      y[i] += sum >> 15;
    }
  }
}

乘法器使用次数:N*n

 

3.倒序法:(输入输出可以是同一量)

void fir(short x[], short h[], short y[])
{
  int i,j;
  long long sum;  
 
  for (j = N; j > 0; j--)
  {
    sum = 0;
    for (i = n; i > 0; i--)
      sum += x[j-i] * h[i];
    y[j] = sum >> 15;
  }
}





鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap