matlab设计数字滤波器以及C语言实现

matlab设计数字滤波器以及C语⾔实现
1、通过matlab设计数字滤波器如下图所⽰:
现在matlab⾃动给的是直接II型和⼆阶节,为了⽅便理解和书写,把它转换为直接I型,和单节点形式,在通过滤波器差分⽅程定义来实现C 预⾔的编写
2、转换为直接I型和单节点,并记录滤波器的核系数,在编辑选择转换为单节,在编辑中选择转换结构转换为直接I型
于是就可以看到滤波器的核系数了:
3、c代码编写
double fenzi[9] = { 0.000806359865037099550304222628227535097 ,              0,-0.003225439460148398201216890512910140387  ,  0  ,                    0.004838159190222597084984901272264323779  ,0 ,-0.003225439460148398201216890512910140387  , 0 ,
0.000806359865037099550304222628227535097 };
double fenmu[9] = { 1.000 , -6.464172081463741115214816090883687138557 ,  18.76567908459470146453895722515881061554 ,
-31.928376738735259721124748466536402702332 ,  34.809516166787368263157986802980303764343 ,
-24.89914491212426739252805418800562620163 , 11.414211408951089765650976914912462234497,
-3.068150389674379141524696024134755134583 ,    0.370814215929453461217946141914580948651 };
#define MAXPOINT    20
double xintemp[MAXPOINT];
double youtemp[MAXPOINT];
static int16_t fliterfun (float *pdatain , float  *pdataout , uint16_t sizeofdata , uint16_t filterN , double *fenzi , double *fenmu) {
int16_t errorcode = 0;
uint16_t i = 0;
uint16_t j = 0;
memset((void*)&xintemp[0], 0, sizeof(double) * 20);
memset((void*)&youtemp[0], 0, sizeof(double) * 20);
if (filterN > MAXPOINT) {
errorcode = -1;
return errorcode;
}
for (i = 0; i < sizeofdata; i++) {
for(j = MAXPOINT-1 ; j > 0 ; j--){
xintemp[j] = xintemp[j-1];
youtemp[j] = youtemp[j-1];
}
xintemp[0] = (double)pdatain[i];
youtemp[0] = 0;
for (j = 0; j < filterN; j++) {
youtemp[0] = youtemp[0] + ((fenzi[j] * xintemp[j]) / fenmu[0]);
}
for (j = 1; j < filterN; j++) {
youtemp[0] = youtemp[0] - ((fenmu[j] * youtemp[j]) / fenmu[0]);
}
pdataout[i] = (float)youtemp[0];
}
return errorcode;
}
//调⽤
fliterfun(&ODATA[0], &ODATA[0] , 512, 9, &fenzi[0], &fenmu[0]);

本文发布于:2024-09-24 10:25:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/95997.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:转换   编辑   定义   选择   系数   设计   数字   节点
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议