栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

MATLAB巴特沃斯滤波器C语言离散实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MATLAB巴特沃斯滤波器C语言离散实现

matlab创建一个4阶巴特沃斯低通滤波器代码;

clc
clear
% Digits =8;
fs=40960;
lpf=8000;
f=8000;
t=0:1/fs:0.1-1/fs;
x=cos(2*pi*f*t);
[b,a]=butter(4,lpf*2/fs,'low');%%构建4阶巴特沃斯低通滤波器lpf为3db带宽
y=filter(b,a,x);

filter的实际就是对X数组做离散运算得到滤波后数组;

使用的离散序列为:

a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)
                        - a(2)*y(n-1) - ... - a(na+1)*y(n-na)

b=[0.043217558470443   0.172870233881774   0.259305350822661   0.172870233881774   0.043217558470443];
a=[1  -0.855646565289075   0.718318727070705  -0.203916450503673   0.032725224249138];
y(1)=b(1)*x(1);
y(2)=b(1)*x(2)+b(2)*x(1)-a(2)*y(1);
y(3)=b(1)*x(3)+b(2)*x(2)+b(3)*x(1)-a(2)*y(2)-a(3)*y(1);
for i=4:length(x)
y(i)=b(1)*x(i)+b(2)*x(i-1)+b(3)*x(i-2)+b(4)*x(i-3)-a(2)*y(i-1)-a(3)*y(i-2)-a(4)*y(i-3);
end

以上代码可放到C语言实现,只是数组写的形式不一样,需要做一些修改;

滤波效果对比,略有差异:整体是一致的,filter描述也是使用该离散序列,但实际filter滤波效果更好,离散序列效果不够。暂未深究

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号