用Matlab分享一个软件低通滤波算法

前言:前一阵子学习了matlab的一些数据处理的基本操作,但是都没怎么用,很多操作忘记了,昨天晚上看到一个滤波算法思想感觉还不错,现在打算用Matlab来仿真看看具体效果怎样

正文:

代码如下:初次写Matlab的代码,可能里面很多不规范的操作,代码非常简单。

这里设置了1000个样本,并添加一些高斯噪声,然后做一个类似窗口滤波的操作

clear
t = linspace(1,1000,1000); %采样频率
sample = 1000 + randi(100,1000,1) - randi(100,1000,1); %设置一个样本并添加一定的扰动
filter_s = randi(1,1000,1);%设置一个数组记录滤波过程中的滤波结果,用于绘图
filter_c = 0.25; %设置滤波系数
filter_f = zeros(5,1); %定义一个滤波窗口
for i=1:1000 %循环采样并进行滤波
    filter_f(5)=sample(i) ;%把样本传进滤波器
    filter_s(i)=filter_f(1); %记录滤波过程中的滤波结果,用于绘图
    for j=5:-1:2 %滤波
        filter_f(j-1)=filter_f(j-1)+filter_c*(filter_f(j)-filter_f(j-1));
    end
end
plot(t,sample); %绘制样本数据图
hold on; %在原图继续绘制
plot(t,filter_s); %绘制滤波结果
xlabel('t'), ylabel('Data'); %给图添加标签
legend('Input Data','Filtered Data'); %两条曲线添加标签

然后仿真看结果:

效果还行,对于一些毛刺能够滤除,而且波形还算比较连续平滑。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值