打印

活雷锋们你们在哪???

[复制链接]
1852|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
醉酒赋江南|  楼主 | 2010-6-1 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 醉酒赋江南 于 2010-6-2 15:11 编辑

这个问题我在很多论坛上问了,都没有好的答复,说的都是很模糊,今天来到21IC 希望不要令我失望啊!知道的高手希望能伸出援助之手!

     问题内容:  用430单片机设计一个 FIR滤波器的程序!

     由于这个涉及到数字信号处理方面的内容,而小弟又还没学,但是这个是任务,必须完成,所以请各位大虾一定要帮帮我!
    目前我知道要写这个程序的话,要先求h(n);然后代入公式。但是我存在一些疑问:
      1:若要实现FIR滤波,例如,频率为80的数据,那么,采样频率至少为160.然后选取滤波器类型,通过相关软件取得该滤波器的系数,即差分方程的系数h(n).将采样数据带入差分方程.便可以实现滤波吗?
     2:方程 H(z)=∑(h(n)*z)(-n次方)  (n 从负无穷大到正无穷大,求和)里面的. z是什么啊?是第n次的采样值吗?
     3:窗口函数怎么选取啊?是根据指标的需要,例如需要几阶的滤波器,阻带的衰减分贝来确定的吗?
    4 :上面的方程用文字来描述应该是怎样的啊?
    我的理解是(如果2成立的话):
        本次采样经过滤波的有效值=第一次采样系数*第一采样未经滤波的值+第二次采样系数*第二次未经滤波的值+......+..+第n次采样系数*第n次采样未经滤波的值,不知道我这样理解对不对,希望各位大虾批评指导!
   5:n值是怎么确定的啊?就是采样次数吗?还是其他的什么啊?


  我根据一点资料自己写了一小段程序,是基于MSP430F149的,贴出来希望大家能帮忙看看...
注:IN_ADvaul[] 为存放采样值的数组, Coeff_vaul[] 为存放matlab生成的系数
long int Deal_ADvaul(void)//切比雪夫等波纹逼近低通算法
{   
    unsigned char i;
    long int Out_ADvaul = 0;
    for (i = (Num_Samp - 1);i > 0;i --)
    {
       IN_ADvaul = IN_ADvaul[i - 1];  /*采样值后移   */         
    }
   
    IN_ADvaul[0] = ADC12MEM0;  /*放入新的采样值*/
   
    for (i = (Num_Samp - 4);i < Num_Samp;i ++)
    {
       Out_ADvaul += (Coeff_vaul[(Num_Samp - i)] * IN_ADvaul);
       /*代入公式Y(n)=∑x(k)*h(n-k)  (n=k=0~19) ,求Y(16)+Y(17)+Y(18)+Y(19)*/
    }
   
Out_ADvaul = Out_ADvaul / 4;/*求[ Y(16)+Y(17)+Y(18)+Y(19) ]/4 用此值来代表滤波后的值*/
   
  return Out_ADvaul;
}

相关帖子

沙发
ayb_ice| | 2010-6-2 08:54 | 只看该作者
baidu

使用特权

评论回复
板凳
醉酒赋江南|  楼主 | 2010-6-2 14:36 | 只看该作者
难道就没有一个人可帮忙?
         落寞的论坛...

使用特权

评论回复
地板
mohanwei| | 2010-6-2 14:41 | 只看该作者
学习是要有个渐进的过程的……你的问题说难也难,说简单也简单。
建议你先捣鼓一下IDE的使用,点个流水灯,再研究你提出的问题。

使用特权

评论回复
5
醉酒赋江南|  楼主 | 2010-6-2 15:03 | 只看该作者
4# mohanwei
  谢谢关注,其实我现在只要一个方法而已,怎么说呢,就是能够照猫画虎就行,这些信号处理的理论我都还没有学,要下学期才开课,但是现在这是老师给的模块任务(在参加电竞)所以必须得完成啊!而且时间比较紧。所以,就像普通的人学焊板子一样,你只要给个方法,演示一遍,不需要太多的理论!就拿这个问题来说吧,你只需要告诉我:(例如:)
   1:取h(n)  2:取采样值 3:卷积   但是我不知道公式里面哪一个代表采样值,然后也不知道怎么卷积 ,更不知道步骤对不对,你只需要指点一下步骤,对公式里面的各项式做个简单的注释。所以,期望能够得到大家的帮助...

使用特权

评论回复
6
ngyg12| | 2010-6-4 15:50 | 只看该作者
高手一般都不怎么理解菜鸟的....

使用特权

评论回复
7
ayb_ice| | 2010-6-4 15:52 | 只看该作者
这个基本是纯数学的东东

使用特权

评论回复
8
wjy1107| | 2010-6-4 16:34 | 只看该作者
卷积基本上就是两个数组的乘法和加法。窗口参数都是在MATLAB上做好的,然后存储到一个数组中做窗口乘积的因子。
我的理解就是这样的。我看你写的程序基本上没错啦,主要是参数那里对不对。而且输出的数据好像是有延迟的,好像是N/2。

使用特权

评论回复
9
wjy1107| | 2010-6-4 16:36 | 只看该作者
如果想对比你写的程序对不对,可以把采集到的真实数据拿到MATLAB中,用那个滤波函数画个图,再对比C语言写的对不对。虽然很繁琐但是挺好用。笨人有笨招哈。

使用特权

评论回复
10
醉酒赋江南|  楼主 | 2010-6-5 09:48 | 只看该作者
哦 呵呵,这样啊!我在去琢磨琢磨...谢谢大家!

使用特权

评论回复
11
一棵小草| | 2010-6-5 13:18 | 只看该作者
不喜欢这种语气
都没有好好去想,去做,就求答案,唉-------------

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

1

粉丝