18、matlab信号生成与预处理--剔除异常值:hampel()函数

1、语法

说明:对输入向量x应用Hampel滤波器来检测和去除异常值。

1)y = hampel(x) 参数:x:输入信号 y:预处理的输出信号

对于x的每个样本,函数计算由样本及其周围的六个样本组成的窗口的中位数,每边三个。它还使用中位数绝对偏差估计每个样本关于其窗口中位数的标准偏差。如果样本与中位数相差超过三个标准差,则将其替换为中位数。如果x是一个矩阵,那么该函数将x的每一列视为一个独立的通道。

2)[y,j] = hampel(x) 参数:x:输入信号 y:预处理的输出信号 j:离群指数(0/1表示,1离群)

返回一个逻辑矩阵,该矩阵在标识为离群值的所有点的位置为真

3)[y,j,xmedian,xsigma] = hampel(x)

参数: x:输入信号 y:预处理的输出信号 j:离群指数(0/1表示,1离群) xmedian:中位数 xsigma:估计标准差

返回x的每个元素的局部中位数和估计标准差。

4)y = hampel(x,k) 参数:x:输入信号 y:预处理的输出信号 k:样本两侧数据数

指定测量窗口中x的每个样本两侧的邻居k的数量。K默认为3。

5)y = hampel(x,k,nsigma)

指定若干个标准差,x的样本必须与局部中位数不同,才能被替换为中位数。sigma默认为3。

2、单通道信号生成与预处理

1)单通道信号生成

代码

Matlab 复制代码
x = sin(4*pi*(0:199)/200);%输入值
x(6) = 2.5;%异常点1
x(20) = -3;%异常点2
x(120) = 2.5;%异常点3
x(180) = -3;%异常点4
n = 1:length(x);
figure(1)
plot(n,x,'color','r')%加入异常数据

视图效果

2)单通道信号处理:hampel()函数

代码

Matlab 复制代码
x = sin(4*pi*(0:199)/200);%输入值
x(6) = 2.5;%异常点1
x(20) = -3;%异常点2
x(120) = 2.5;%异常点3
x(180) = -3;%异常点4
n = 1:length(x);
figure(1)
plot(n,x,'color','r')%加入异常数据
hold on;
[y,j,xmedian,xsigma] = hampel(x,4);
plot(n,y,'^','color','g')%预处理数据
plot(n,xmedian,'^','color','b')%中位数
plot(n,xsigma,'*','color','y')%标准差
a=find(j);%find()函数:返回非零元素 索引
plot(a,x(j),'s','color','k')
legend('异常','预处理','中位数','估计标准差','离群点')

视图效果

3)单通道信号处理参数调整

代码

Matlab 复制代码
hampel(x,2)%调整k参数

k=2/4/6/8效果图

3、双通道信号生成与预处理

1)双通道信号生成

代码

Matlab 复制代码
rng('default')%控制随机函数生成
n = 100;
x = sin(pi./[10 20]'*(1:n)+pi/6)';%双通道信号生成
figure(1)
plot(x)
sy= randi(100,9,1);%添加异常参数的索引//100以内,9行1列的矩阵 
x(sy) = x(sy)*2.2;%添加异常参数
x(randi(100,6,1)) = NaN;%添加异常 缺失参数
figure(2)
plot(x)

视图效果

2)双通道信号处理(处理异常点和数据缺失)

代码:

Matlab 复制代码
figure(3)
y = hampel(x,4);
plot(y)
figure(4)
[y,j,xmedian,xsigma] = hampel(x,4,2);
plot(y)
hold on
plot(xmedian,'^')

试图效果

相关推荐
慧一居士8 分钟前
SpringBoot改造MCP服务器(StreamableHTTP)
人工智能
MChine慕青9 分钟前
顺序表与单链表:核心原理与实战应用
linux·c语言·开发语言·数据结构·c++·算法·链表
索迪迈科技14 分钟前
安防芯片 ISP 的白平衡统计数据对图像质量有哪些影响?
人工智能·计算机视觉·白平衡
AiTop10023 分钟前
腾讯推出AI CLI工具CodeBuddy,国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商
ide·人工智能·ai·aigc·ai编程
伊玛目的门徒26 分钟前
告别 OpenAI SDK:如何使用 Python requests 库调用大模型 API(例如百度的ernie-4.5-turbo)
python·openai·requests·大模型调用·ernie-4.5-turbo
塔中妖41 分钟前
【华为OD】查找接口成功率最优时间段
算法·链表·华为od
星马梦缘42 分钟前
Matlab机器人工具箱使用5 轨迹规划
matlab·机器人·轨迹规划·空间插值
塔中妖44 分钟前
【华为OD】最大子矩阵和
算法·华为od·矩阵
山楂树下懒猴子1 小时前
ChatAI项目-ChatGPT-SDK组件工程
人工智能·chatgpt·junit·https·log4j·intellij-idea·mybatis
Learn Beyond Limits1 小时前
The learning process of Decision Tree Model|决策树模型学习过程
人工智能·深度学习·神经网络·学习·决策树·机器学习·ai