已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
今天出了点岔子,底噪不知怎么变大了很多,
估计是程序问题,也可能是模拟电路的故障,示波器不在手边,难办。
IIR高通改为全浮点计算,能直接支持matlab生成的系数,哇哈哈。

附上代码(iir_filter.c):

#include "datatype.h"
#include "iir_filter.h"
#include "iir_coefs.h"

static float y[IIR_NSEC][3];

static float x[IIR_NSEC+1][3];



int16 iir_filter(int16 in)

{

      uint16 i;

      

      x[0][0] = in;

      

      for(i=0;i<IIR_NSEC;i++)

      {

        

          y[i][0] =x[i][0]*IIR_B[i][0]+x[i][1]*IIR_B[i][1]+x[i][2]*IIR_B[i][2]-y[i][1]*IIR_A[i][1]-y[i][2]*IIR_A[i][2];

          y[i][0] /= IIR_A[i][0];

          

          y[i][2]=y[i][1];y[i][1]=y[i][0];

          x[i][2]=x[i][1];x[i][1]=x[i][0];

          

          x[i+1][0] = y[i][0];

      }

      

      if( x[IIR_NSEC][0]>32767)  x[IIR_NSEC][0]=32767;

      if( x[IIR_NSEC][0]<-32768) x[IIR_NSEC][0]=-32768;

      return  ((int16)x[IIR_NSEC][0]);    

      

}


//复位滤波器
void iir_reset(void)

{

    uint16 i,j;

    

    for(i=0;i<IIR_NSEC+1;i++)

    {

       for(j=0;j<3;j++)

       {

          x[i][j]=0;

       }

    }

    

    for(i=0;i<IIR_NSEC;i++)

    {

       for(j=0;j<3;j++)

       {

          y[i][j]=0;

       }

    }

}

系数生成方法
用fdatool设计一个IIR滤波器,然后点击菜单中的Edit->Convert Structure 选择Direct Form I ,SOS,(必须是Direct Form I,II不行)
注意这里千万不要点击Convert to single section 这一项。
然后选择quantize filter,精度选择single precision floating point (单精度浮点)
再点击菜单中的Targets -> generate c header ,选择export as:single precision floating point (单精度浮点)
填写变量名称时,把NUM改成IIR_B,DEN改成IIR_A,其他不用动,保存为iir_coefs.h
最后打开iir_coefs.h把MWSPT_NSEC替换成IIR_NSEC,   NL、DL删除掉,real32_T改成float ,
其中有一个#include项要删掉,那个twwtypes.h没必要使用的.
改完的文件:
#define IIR_NSEC 9
   //原来叫做MWSPT_NSEC


const float IIR_B[IIR_NSEC][3] = {
   //为什么改为float很明显了吧
  {

     0.8641357422,              0,              0

  },

  {

                1,             -2,              1

  },

  {

     0.9949035645,              0,              0

  },

  {

                1,   -1.999938965,              1

  },

  {

     0.9985351563,              0,              0

  },

  {

                1,    -1.99987793,              1

  },

  {

     0.9996337891,              0,              0

  },

  {

                1,    -1.99987793,              1

  },

  {

                1,              0,              0

  }

};



const float IIR_A[IIR_NSEC][3] = {

  {

                1,              0,              0

  },

  {

                1,   -1.938049316,   0.9401855469

  },

  {

                1,              0,              0

  },

  {

                1,   -1.989501953,   0.9900512695

  },

  {

                1,              0,              0

  },

  {

                1,   -1.996887207,   0.9971923828

  },

  {

                1,              0,              0

  },

  {

                1,   -1.999084473,   0.9993286133

  },

  {

                1,              0,              0

  }

};


最后调用iir_filter函数,就可以得到滤波后的结果
文号 / 238849

万流景仰
名片发私信
学术分 14
总主题 368 帖总回复 7688 楼拥有证书:学者 机友
注册于 2008-10-11 20:04最后登录 2024-05-16 02:16
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步

个人简介

Cubesat

文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}