MATLAB学习笔记——离群值检测替换方法

2 篇文章 0 订阅
2 篇文章 1 订阅

离群值:是指在数据中有一个或几个数值与其他数值相比差异较大,通俗来说就是离群体较远的数据。

需要用到的函数是isoutlier,对于原始含噪音的随机信号,其中会存在离群点的情况,接下来我们介绍如何对含有高斯白噪声的随机信号进行离群值检测和替换:

首先产生一个高斯白噪声加入随机信号,形成一个原始信号后对原始信号进行处理:

fs=500;         %采样率
f1=7;           %信号频率
f2=9;          %信号频率
T=1;            %时宽1s
n=round(T*fs);  %采样点个数(四舍五入)
o=2*pi*rand;    %生成(0:2π)之间的随机相位
t=linspace(0,T,n);%时域横坐标
x=2+cos(2*pi*f1*t+o)+2*cos(2*pi*f2*t+o);%形成三频信号,注意第二个频率信号幅度为2,直流幅度为3。
N=2*randn(size(t));     %生成一个均值为0,方差为4的高斯噪声信号
y=x+N;            %给信号加上高斯噪声干扰

使用isoutlier函数检测其离群点,并找出其横纵坐标的值:

TF=isoutlier(y);%检测离群值
i=find(TF);%找出离群值横坐标位置
j=y(i);%得出该离群值位置的值是多少

最后使用filloutliers函数进行填充消除离群值绘制图像,填充方法很多如下,参考MATLAB帮助中心:

 这里采用下一个点的坐标进行填充,根据数据类型选择合适的填充方法。

yfill = filloutliers(y,'next');
figure(4);
plot(t,y,t,yfill);
axis tight
legend('原始信号','离群值填充后信号')

填充后的对比如下所示:

 可以明显看出中间有个值偏高,填充后消除了离群值,也可以在工作区中进行查看:

 

因为信号是随机的,所以每个人数据可能不同,也可能没有离散值,也可能不止一个离散值。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值