异常数据过滤算法MATLAB

这篇具有很好参考价值的文章主要介绍了异常数据过滤算法MATLAB。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(1)莱茵达准则

莱因达准则又称3sigma准则:本方法适合样本数据服从正态分布,且样本量不小于8。根据莱因达准则,当观测数据服从正态分布时,残差落在3倍标准差[-3,3]的概率超过99. 7%,落在此区域外的概率不超过0. 3%。因此,可以认为残差落于该区域外的测量数据为异常值。

算法步骤为:

①首先需要保证需要检验的数据列大致上服从正态分布;

②然后计算需要检验的数据列的标准差;

③最后比较数据列的每个值,是否大于标准差的3倍;

④大于3倍标准差的删除该样本。

function [data_new] = ryan_filter(data)
% Ryan filter for outlier detection
% data: input data
% data_new: output data after filtering
mu = mean(data(:,2));
sigma = std(data(:,2));
data_new = data(abs(data(:,2) - mu) <= 3*sigma,:);
end

(2)极差比法

极差比法也叫狄克逊(Dixon)准则:以极差比为统计量来判定和剔除异常数据。该准则采用极差比的方法,可得到简化而严密的结果,从而避免了需先求出样本标准差的麻烦。本方法适合静态数据,且样本数据服从正态分布。

function [data_new] = range_filter(data)
% Range filter for outlier detection
% data: input data
% data_new: output data after filtering

r = range(data(:,2));
q1 = prctile(data(:,2), 25);
q3 = prctile(data(:,2), 75);
iqr = q3 - q1;
data_new = data(abs(data(:,2) - median(data(:,2)),:) <= 3*r/iqr);
end

(3)格鲁布斯法

格鲁布斯法适合样本数据服从正态分布,且样本量不小于3。

function [data_new] = grubbs_filter(x,alpha)
flag_1=1;
flag_2=0;
%% 计算 
while flag_1==1
sortrows(x,2);
n=size(x,1);
avg=mean(x(:,2));
st=std(x(:,2),1); 
reg=abs((x(:,2)-avg)./st);
reg_max=max(reg);
%% 确定g值 
T=[0 0 1.153 1.463 1.672 1.822 1.938 2.032 2.11 2.176 2.234 2.285 2.331 2.371 2.409 2.443 2.475 2.501 2.532 2.557 2.58 2.603 2.624 2.644 2.663 2.681 2.698 2.714 2.73 2.745 2.759 2.773 2.786 2.799 2.811 2.823 2.835 2.846 2.857 2.866 2.877 2.887 2.896 2.905 2.914 2.923 2.931 2.940 2.948 2.956 2.943 2.971 21978 2986 2.992 3.000 3.006 3.013 3.019 3.025 3.032 3.037 3.044 3.049 3.055 3.061 3.066 3.071 3.076 3.082 3.087 3.092 3.098 3.102 3.107 3.111 3.117 3.121 3.125 3.130 3.134 3.139 3.143 3.147 3.151 3.155 3.160 3.163 3.167 3.171 3.174 3.179 3.182 3.186 3.189 3.193 3.196 3.201 3.204 3.207; 
0 0 1.155 1.492 1.749 1.944 2.097 2.22 2.323 2.41 2.485 2.55 2.607 2.659 2.705 2.747 2.785 2.821 2.954 2.884 2.912 2.939 2.963 2.987 3.009 3.029 3.049 3.068 3.085 3.103 3.119 3.135 3.150 3.164 3.178 3.191 3.204 3.216 3.228 3.240 3.251 3.261 3.271 3.282 3.292 3.302 3.310 3.319 3.329 3.336 3.345 3.353 3.361 3.388 3.376 3.383 3.391 3.397 3.405 3.411 3.418 3.424 3.430 3.437 3.442 3.449 3.454 3.460 3.466 3.471 3.476 3.482 3.487 3.492 3.496 3.502 3.507 3.511 3.516 3.521 3.525 3.529 3.534 3.539 3.543 3.547 3.551 3.555 3.559 3.563 3.567 3.570 3.575 3.579 3.582 3.586 3.589 3.593 3.597 3.600];
switch alpha
case 0.05 
g=T(1,n);
case 0.01 
g=T(2,n);
otherwise 
disp('输入了错误的alpha值');
end % 比较确定异常值?
if reg_max>g 
flag_2=1;
abn=x(reg>g);
disp('被剔除的数据为')
disp(abn);
x=x(reg<=g,:);
else
    flag_1=0;
end
end
if flag_2==0 
disp('没有异常数据');
end
data_new = x;
end

(4)滑弧法

滑弧法:当采样数据不满足平稳性正态性要求时,可基于状态方程并采用卡尔曼滤波、分割递推算法或最大似然法来识别和剔除异常值,但这些算法比较复杂。更简单的方式是采用滑弧算式,滑弧算式不对数据进行分段。本方法适用于动态数据。文章来源地址https://www.toymoban.com/news/detail-648939.html

function [data_new] = hh_filter(data,w)
sortrows(data,1);
temp = data(:,2);
temp_new= filloutliers(temp,'spline','movmedian',w); 
data(:,2) = temp_new;
data_new = data;
end

到了这里,关于异常数据过滤算法MATLAB的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • chatgpt赋能python:Python异常过滤教程:如何正确处理和过滤Python中的异常

    Python是一种非常流行的编程语言,广泛应用于各种应用程序和领域中。在我们编写Python程序的过程中,通常要处理各种异常情况,比如用户输入错误,文件读取错误等等。正确处理和过滤这些异常情况是保证我们的程序能够正常运行的关键。 在本文中,我们将介绍如何正确处

    2024年02月09日
    浏览(47)
  • 【数据结构与算法】布隆(Bloom Filter)过滤器

    Redisson系列文章: 【Redisson】Redisson–基础入门 【Redisson】Redisson–布隆(Bloom Filter)过滤器 【Redisson】Redisson–分布式锁的使用(推荐使用) 【分布式锁】Redisson分布式锁底层原理 【Redisson】Redisson–限流器 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的

    2024年02月05日
    浏览(32)
  • 【数据结构与算法】哈希—— 位图 | 布隆过滤器 | 哈希切割

    🐱作者:一只大喵咪1201 🐱专栏:《数据结构与算法》 🔥格言: 你只管努力,剩下的交给时间! 哈希是一种映射思想,这里再讲解两种应用哈希思想的数据结构。 问题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数

    2024年02月02日
    浏览(54)
  • 基于Hadoop大数据技术和协同过滤算法的就业推荐系统

    随着互联网的快速发展,网络数据量不断增加,已经进入了大数据时代。大量的信息和商品同时呈现在用户面前,使我们面临一个严重的问题-信息过载,而个性化推荐是解决该问题一个有效的方法,协同过滤方法是目前在实际推荐系统中应用最多的个性化推荐方法,它基于群体的偏好

    2024年02月03日
    浏览(40)
  • 过滤微信小程序“跑步运动助手”GPS飘逸点数据的算法

    GPS数据中的飘逸点指的是由于多种原因(如信号干扰、建筑物遮挡等)导致的位置不准确的点。为了减少这些飘逸点的影响,可以采用以下算法进行数据过滤: 简单滑动窗口法:将一段时间内的GPS数据进行滑动窗口平均处理,即对一段时间内的位置数据进行平均计算,来得到

    2024年02月11日
    浏览(58)
  • m基于C3D-hog-GRNN广义回归神经网络模型的人员异常行为识别算法的matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB       实时的人群异常行为识别是一项极具挑战的工作,具有较高的现实意义和社会需求,快速准确地判断出异常行为并及时预警,一直是我们探索的方向。传统的机器学习算法虽然具有较好的行为识别效果,但是算

    2023年04月08日
    浏览(39)
  • NestJS 的 异常过滤器学习

    NestJS 带有一个内置的异常层,负责处理应用程序中所有未处理的异常。当应用程序代码未处理异常时,该层会捕获异常,然后自动发送对应的异常响应给用户。 在 NestJs 中默认异常过滤器为 HttpException 及其子类,当异常无法不属于 HttpException 或者子类的时候,内置的异常过滤

    2024年02月14日
    浏览(42)
  • MATLAB 点云重复点去除(7)

    效果上看不出来,但实际上左边的点云是右边的两倍 重复点的去除,是点云处理中常用的预处理方法,因为重复点的存在有时候会严重干扰后续算法的准确性,甚至出现意想不到的错误,去除方法也比较简单,即我们认为0.01m以内的点过于靠近,则可以将它们看作重复点,此

    2024年02月03日
    浏览(37)
  • 5.使用日志+自定义全局异常过滤器

    刚开始写文章,封装Base基类的时候,添加了trycatch异常块,不过当时没有去记录日志,直接return了。有小伙伴劝我不要吃了Exception  其实没有啦,项目刚开始,我觉得先做好整体结构比较好。像是盖楼一样。先把楼体建造出来,然后再一步一步的美化完善。 基础的仓储模式已

    2024年02月08日
    浏览(44)
  • Matlab信号处理1:模拟去除信号噪声

    一个简单的示例: 设计Matlab程序,去掉左图信号中大于20Hz的频率,使其变为右图。 注: 1. 第85行低通滤波器的设计需要在命令行窗口输入 filterDesigner 以打开滤波器设计窗口,如下图: 在窗口中设置如下红框中主要参数,然后点击 设计滤波器 : 生成成后,会出现粉框中的

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包