搜索
bottom↓
回复: 8

Matlab IIR滤波器设计,求教

[复制链接]

出0入0汤圆

发表于 2012-11-10 20:00:30 | 显示全部楼层 |阅读模式
本帖最后由 Nexus 于 2012-11-10 20:01 编辑

用MatLab的fdatool设计了滤波器,然后导出头文件,参数什么的先不管,有以下疑问:
1.NL[MWSPT_NSEC]这个数组是干嘛用的?
2.const real32_T NUM[MWSPT_NSEC][3] = {....这个为什么要二维数组呢?如果单纯是系数的话,一维的就够了。
3.const real32_T NUM[MWSPT_NSEC][3]  和 const real32_T DEN[MWSPT_NSEC][3] 这两个数组如何配合使用?分别什么意思啊·???
4.这个图片里Order是22,那这个section是什么意思?

求指教大神,数字信号处理学过,都忘记了。。。

最后贴一下代码:
/*
* Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool
*
* Generated by MATLAB(R) 7.12 and the Signal Processing Toolbox 6.15.
*
* Generated on: 10-Nov-2012 19:57:29
*
*/

/*
* Discrete-Time IIR Filter (real)
* -------------------------------
* Filter Structure    : Direct-Form II, Second-Order Sections
* Number of Sections  : 11
* Stable              : Yes
* Linear Phase        : No
*/

/* General type conversion for MATLAB generated C-code  */
#include "tmwtypes.h"
/*
* Expected path to tmwtypes.h
* C:\Program Files\MATLAB\R2011a\extern\include\tmwtypes.h
*/
/*
* Warning - Filter coefficients were truncated to fit specified data type.  
*   The resulting response may not match generated theoretical response.
*   Use the Filter Design & Analysis Tool to design accurate
*   single-precision filter coefficients.
*/
#define MWSPT_NSEC 23
const int NL[MWSPT_NSEC] = { 1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1 };
const real32_T NUM[MWSPT_NSEC][3] = {
  {
    0.09686300904,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.08955428004,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.08345051855,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.07838561386,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.07421958447,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.07083738595,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.06814649701,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.06607432663,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.06456578523,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.06358129531,              0,              0
  },
  {
                1,              2,              1
  },
  {
    0.06309531629,              0,              0
  },
  {
                1,              2,              1
  },
  {
                1,              0,              0
  }
};
const int DL[MWSPT_NSEC] = { 1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1 };
const real32_T DEN[MWSPT_NSEC][3] = {
  {
                1,              0,              0
  },
  {
                1,   -1.530096531,   0.9175485373
  },
  {
                1,              0,              0
  },
  {
                1,   -1.414644241,   0.7728613615
  },
  {
                1,              0,              0
  },
  {
                1,   -1.318226099,    0.652028203
  },
  {
                1,              0,              0
  },
  {
                1,   -1.238218307,   0.5517607927
  },
  {
                1,              0,              0
  },
  {
                1,   -1.172409654,   0.4692879915
  },
  {
                1,              0,              0
  },
  {
                1,   -1.118982673,   0.4023322761
  },
  {
                1,              0,              0
  },
  {
                1,   -1.076476097,    0.349062115
  },
  {
                1,              0,              0
  },
  {
                1,   -1.043743134,   0.3080404103
  },
  {
                1,              0,              0
  },
  {
                1,   -1.019913435,   0.2781765163
  },
  {
                1,              0,              0
  },
  {
                1,   -1.004361987,   0.2586871684
  },
  {
                1,              0,              0
  },
  {
                1,  -0.9966852069,    0.249066487
  },
  {
                1,              0,              0
  }
};

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2012-11-11 08:51:46 | 显示全部楼层
求大神的指导啊。。。。

出0入0汤圆

发表于 2012-11-20 09:37:21 | 显示全部楼层
order是滤波器的阶数 好久没搞了 也忘得差不多了

出0入0汤圆

 楼主| 发表于 2012-11-20 09:43:16 | 显示全部楼层
skystalker 发表于 2012-11-20 09:37
order是滤波器的阶数 好久没搞了 也忘得差不多了

谢谢指导,不过还是没搞清楚,可能需要一次实践过程才能搞明白。。。

出0入0汤圆

发表于 2012-11-20 10:02:36 | 显示全部楼层
Nexus 发表于 2012-11-20 09:43
谢谢指导,不过还是没搞清楚,可能需要一次实践过程才能搞明白。。。

IIR和FIR都不复杂 就是求卷积之类的 自己推一次就明白了

出0入0汤圆

发表于 2015-5-11 00:42:32 | 显示全部楼层
一般都用直接2型吧, 是n个二阶滤波器的串联

出0入0汤圆

 楼主| 发表于 2015-5-11 09:10:59 | 显示全部楼层
MidoriYakumo 发表于 2015-5-11 00:42
一般都用直接2型吧, 是n个二阶滤波器的串联

我现在明白了,谢谢,直接二型。

出0入0汤圆

发表于 2015-5-11 11:15:51 | 显示全部楼层
22阶,延迟会不会太长了呀?

出0入0汤圆

 楼主| 发表于 2015-5-11 12:49:21 | 显示全部楼层
xuekcd 发表于 2015-5-11 11:15
22阶,延迟会不会太长了呀?

只要频率响应过得去就可以的。阶数高主要是截止频率下降快。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 05:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表