zoukankan      html  css  js  c++  java
  • 二阶滤波

    /*=====================================================================================
     File name:        filter.C  (IQ version)
                        
     Originator:    Digital Control Systems Group
                Texas Instruments
    
     Description:  The Voltage Reconstruction based on switching functions and DC-Bus voltage                    
    
    =====================================================================================
     History:
    -------------------------------------------------------------------------------------
     04-15-2005    Version 3.20
    -------------------------------------------------------------------------------------*/
    
    #include "IQmathLib.h"         // Include header for IQmath library
    // Don't forget to set a proper GLOBAL_Q in "IQmathLib.h" file
    #include "DSP281x_Device.h"
    #include "filter.h"
    
    void two_order_filter_calc(TWO_ORDER_FILT_CALC *v)
    {    
        v->yn = _IQmpy(v->par->x0,v->xn) + _IQmpy(v->par->x1,v->xn_1) + _IQmpy(v->par->x2,v->xn_2) + _IQmpy(v->par->y1,v->yn_1) + _IQmpy(v->par->y2,v->yn_2);
        v->xn_2 = v->xn_1;
        v->xn_1 = v->xn;
        v->yn_2 = v->yn_1;
        v->yn_1 = v->yn;
    }
    
    void low_bpf_calc(LOW_BPF *v)
    {
        v->yn = _IQmpy(v->xn,v->filter_t) + _IQmpy(v->yn_1,_IQ(1.0) - v->filter_t);
        v->yn_1 = v->yn;
    }
    /*
     * filter.h
     *
     *  Created on: 2014-1-21
     *      Author: lizhiguo
     */
    
    #ifndef __FILTER_H__
    #define __FILTER_H__
    typedef struct
    {
          _iq  x0;
          _iq  x1;
          _iq  x2;
          _iq  y1;
          _iq  y2;
    }TOW_ORDER_FILTER_PAR;
    
    typedef struct
    {
        _iq xn;
        _iq yn;
        _iq yn_1;
        _iq filter_t;
        void (*calc)();
    }LOW_BPF;
    #define LOW_BPF_DEFAULTS {0,0,0,_IQ(1.0),(void (*)(Uint32))low_bpf_calc}
    
    typedef struct {  _iq  xn;
                      _iq  yn;
                      _iq  xn_1;
                      _iq  xn_2;
                      _iq  yn_1;
                      _iq  yn_2;
                      TOW_ORDER_FILTER_PAR *par;
                        void  (*calc)();    // Pointer to calculation function
                     }TWO_ORDER_FILT_CALC;
    
    #define TOW_ORDER_FILTER_CALC_DEFAULTS {0,0,0,0,0,0,0,(void (*)(Uint32))two_order_filter_calc}
    typedef TWO_ORDER_FILT_CALC *TWO_ORDER_FILT_CALC_handle;
    void two_order_filter_calc(TWO_ORDER_FILT_CALC_handle);
    void low_bpf_calc(LOW_BPF *v);
    
    
    
    #define FILTER(s,f,o) f.xn = s;f.calc(&f);o = f.yn
    #define FILTER_PAR(p) (TOW_ORDER_FILTER_PAR *)(&p)
    
    #endif //
    真正的对手会灌输给你大量的勇气 --卡夫卡
  • 相关阅读:
    笔记手动排序
    笔记手动分页
    Spring定时任务Quartz配置之手动设置
    java 日期处理
    SQL Case when 的使用方法
    Hibernate八大类HQL查询集合
    Spring定时任务Quartz配置
    各个浏览器显示版本(IE,火狐)
    js转译html标签
    定时备份SQL SERVER的数据库并且把备份文件复制到另外一台服务器
  • 原文地址:https://www.cnblogs.com/firstparke/p/8495055.html
Copyright © 2011-2022 走看看