matlab中滤波器函数filter的c语言实现

本文通过实例比较了MATLAB中filter函数与C语言实现的滤波效果。使用相同的滤波系数,在MATLAB中定义了a和b系数数组,并应用于原始信号;在C语言中则通过循环实现了滤波过程。最终两种方式得到的滤波结果一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考出处:https://wenku.baidu.com/view/6a8eeeee9fc3d5bbfd0a79563c1ec5da50e2d6e5.html

实现:

MATLAB的filter滤波函数为:

a=[1.0000;
0;
0.4860;
0;
0.0177];
b=[0.0940;
0.3759;
0.5639;
0.3759;
0.0940];

SignalFilter=filter(b,a,OriginalSignal);

C代码的filter滤波程序为:

int OriginalSignal[100];
float a[5]={1,0,0.4860,0,0.0177};
float b[5]={0.0940,0.3759,0.5639,0.3759,0.0940};

//滤波 5阶的
SignalFilter[0]=b[0]*OriginalSignal[0];
SignalFilter[1]=b[0]*OriginalSignal[1] + b[1]*OriginalSignal[0] - a[1]*SignalFilter[0];
SignalFilter[2]=b[0]*OriginalSignal[2] + b[1]*OriginalSignal[1] + b[2]*OriginalSignal[0] - a[1]*SignalFilter[1]- a[2]*SignalFilter[0] ;
SignalFilter[3]=b[0]*OriginalSignal[3] + b[1]*OriginalSignal[2] + b[2]*OriginalSignal[1] + b[3]*OriginalSignal[0]- a[1]*SignalFilter[2]- a[2]*SignalFilter[1]- a[3]*SignalFilter[0] ;

for (int i=4;i<100;i++)
{
SignalFilter[i]=b[0]*OriginalSignal[i] + b[1]*OriginalSignal[i-1] + b[2]*OriginalSignal[i-2] + b[3]*OriginalSignal[i-3]+ b[4]*OriginalSignal[i-4]- a[1]*SignalFilter[i-1]- a[2]*SignalFilter[i-2] - a[3]*SignalFilter[i-3] - a[4]*SignalFilter[i-4] ;
}

SignalFilter结果相同

转载于:https://www.cnblogs.com/rjjhyj/p/9254290.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值