[AVR单片机] 数字滤波器设计

[复制链接]
3802|15
 楼主| yidou 发表于 2010-6-22 23:27 | 显示全部楼层 |阅读模式
有谁做过数字滤波器,最好是50hz 的陷波器?
 楼主| yidou 发表于 2010-6-23 21:41 | 显示全部楼层
怎么没人回答呢?
 楼主| yidou 发表于 2010-6-24 22:32 | 显示全部楼层
aresc 发表于 2010-6-26 23:03 | 显示全部楼层
void iir_notch_filter_design(int Fs, int Fc, double Q, double *iir_coeffs)
{
        double omega, sinw, cosw, alpha, a0;

        omega = 2. * M_PI * Fc / Fs;    // M_PI = 3.1415926
        sinw  = sin(omega);
        cosw  = cos(omega);
        alpha = sinw / (2. * Q);             // Q value of filter.

        // DIRECT FORM I:
        // a0 * y(n) = b0 * x(n) + b1 * x(n-1) + b2 * x(n-2) - a1 * y(n-1) - a2 * y(n-2)

        iir_coeffs[0] = 1. + alpha;                        // a0: denominator, -> y(n): output
        iir_coeffs[1] = -2. * cosw;                        // a1
        iir_coeffs[2] = 1. - alpha;                        // a2
        iir_coeffs[3] = 1.;                                        // b0:        numerator, -> x(n): input
        iir_coeffs[4] = -2. * cosw;                        // b1
        iir_coeffs[5] = 1.;                                        // b2

        // normalize a0 to 1.0
        a0 = iir_coeffs[0];
        iir_coeffs[1] /= a0;        // a1
        iir_coeffs[2] /= a0;        // a2
        iir_coeffs[3] /= a0;        // b0: numerator, -> x(n): input
        iir_coeffs[4] /= a0;        // b1
        iir_coeffs[5] /= a0;        // b2
        iir_coeffs[0] = 1.;                // a0
}
xiaomifan 发表于 2010-6-27 20:48 | 显示全部楼层
截止掉50hz的信号的陷波器?
xiaomifan 发表于 2010-6-27 20:49 | 显示全部楼层
陷波器就是带阻滤波器
longus 发表于 2010-6-27 22:00 | 显示全部楼层
一直怀疑,所谓的50Hz陷波器,真的需要吗?
不知道到底什么NB的场合需要这东西。如果你的信号回路处理得当,很难想象所谓的“工频”会影响到你。
麻辣鸭脖子 发表于 2010-6-27 22:54 | 显示全部楼层
用DSP里面的滤波功能达不到要求么?
wuzhaolie 发表于 2010-6-27 23:12 | 显示全部楼层
50Hz频率不高啊,有什么特殊的?
lpydidi 发表于 2010-6-28 22:39 | 显示全部楼层
DSP的滤波功能就挺好用的,基本上程序也是现成的
wuzhaolie 发表于 2010-6-28 22:47 | 显示全部楼层
4楼有低通滤波器的程序吗?
aresc 发表于 2010-6-29 18:17 | 显示全部楼层
void iir_lowpass_filter_design(int Fs, int Fc, double Q, double *iir_coeffs)
{
        double omega, sinw, cosw, alpha, a0;

        omega = 2. * M_PI * Fc / Fs;
        sinw  = sin(omega);
        cosw  = cos(omega);
        alpha = sinw / (2. * Q);

        // DIRECT FORM I:
        // a0 * y(n) = b0 * x(n) + b1 * x(n-1) + b2 * x(n-2) - a1 * y(n-1) - a2 * y(n-2)

        iir_coeffs[0] = 1. + alpha;                        // a0: denominator, -> y(n): output
        iir_coeffs[1] = -2. * cosw;                        // a1
        iir_coeffs[2] = 1. - alpha;                        // a2
        iir_coeffs[3] = (1. - cosw) / 2.0;        // b0:        numerator, -> x(n): input
        iir_coeffs[4] = 1. - cosw;                        // b1
        iir_coeffs[5] = (1. - cosw) / 2.0;        // b2

        // normalize a0 to 1.0
        a0 = iir_coeffs[0];
        iir_coeffs[1] /= a0;        // a1
        iir_coeffs[2] /= a0;        // a2
        iir_coeffs[3] /= a0;        // b0: numerator, -> x(n): input
        iir_coeffs[4] /= a0;        // b1
        iir_coeffs[5] /= a0;        // b2
        iir_coeffs[0] = 1.;                // a0
}
guita 发表于 2010-6-30 13:50 | 显示全部楼层
什么程序?也不介绍一下
twlkyao 发表于 2010-8-6 19:22 | 显示全部楼层
看不懂
潜艇8421 发表于 2010-8-7 01:02 | 显示全部楼层
掌门人做过,滤单频50HZ不用这么复杂。
师祖有门规,不是本门弟子不得修练此门武功。
jack_shine 发表于 2010-11-27 13:11 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

391

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部