matlab 滤波去噪

发布时间:2022-06-25 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了matlab 滤波去噪脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

滤波去噪

matlab滤波去噪的三种方法

移动平均法的方法原理

滑动平均法(moving average)也叫做移动平均法、平均法、移动平均值滤波法等等,是一种时间域思想上的信号光滑方法。算法思路为,将该点附近的采样点做算数平均,作为这个点光滑后的值。

matlab 滤波去噪

一般窗口为对称窗口,防止出现相位偏差。窗口一般为奇数。 以3点平均(窗口长度为3)公式为例,原数据为x,平滑后的数据为y:

matlab 滤波去噪

对y(n)和y(n+1)相减,可以得到另一种计算形式:

matlab 滤波去噪

当然这两者都是等价的。

matlab的函数处理

%移动平均滤波
clear
clc
close all

N_window = 5;%窗口长度(最好为奇数)
t = 0:0.1:10;
A = cos(2*pi*0.5*t)+0.3*rand(size(t));
B1 = movmean(A,N_window);
figure(1)
plot(t,A,t,B1)

中值滤波

中位值法,也叫移动中位数法、中值滤波法等。其思想是将窗口内的中位数作为输出结果,如下图所示:

matlab 滤波去噪

优点是,在数据采样点密集,且比较平滑的情况下,中位数法可以很好地剔除离群值。缺点是不适用于噪声较大的情况。而且平滑之后,数据光滑度不足。经过中位值法处理之后,极值点会丢失。

matlab中值滤波

%移动平均滤波
clear
clc
load('类型3_70.mat');
N_window = 5;%窗口长度(最好为奇数)
B1 = movmean(BBl_3_70,N_window);
B2 = movmedian(BBl_3_70,7);%中值滤波
plot(B2,'g');
hold on;
plot(BBl_3_70,'b');
hold on;
plot(B1,'r')

五点三次平滑滤波

滤波函数代码

function [X2] = F_smooth(X1)
% 简单的滤波处理,主要目的在于消除毛刺和去除趋势项,寻找最大和最小值。
m = 3;   %循环的次数
N = length(X1);   %数据的长度
a = X1;
for M = 1:m
    b(1) = (3 * a(1) + 2 * a(2) + a(3) - a(4)) / 5;
    b(2) = (4 * a(1) + 3 * a(2) + 2 * a(3) + a(4)) / 10;
    for j = 3:N-2
        b(j) = (a(j-2) + a(j-1) + a(j) + a(j+1) + a(j+2)) / 5;
    end
    b(N-1) = (a(N-3) + 2 * a(N-2) + 3 * a(N-1) + 4 * a(N)) / 10;
    b(N) = (-a(N-3) + a(N-2) + 2 * a(N-1) + 3 * a(N)) / 5;
    a = b;
end
X2=a;
end

去噪后的结果

几种滤波方式的结果差不太多,点平均滤波好一点,下面是结果图

matlab 滤波去噪

脚本宝典总结

以上是脚本宝典为你收集整理的matlab 滤波去噪全部内容,希望文章能够帮你解决matlab 滤波去噪所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: