ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

matlab 滤波去噪

2022-05-08 11:33:25  阅读:170  来源: 互联网

标签:窗口 滤波 window matlab 70 B1


滤波去噪

matlab滤波去噪的三种方法

移动平均法的方法原理

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

image-20220426100637296

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

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

当然这两者都是等价的。

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)

中值滤波

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

image-20220426103255026

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

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

去噪后的结果

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

image-20220426194833188

标签:窗口,滤波,window,matlab,70,B1
来源: https://www.cnblogs.com/doincli/p/16245071.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有