这个例子展示了如何使用Hampel过滤器检测和删除ThingSpeak™通道数据中的异常值。这个滤波器与中值滤波器密切相关,它有助于在不过度平滑数据的情况下去除信号中的异常值。
读取存储在通道22641的风速使用thingSpeakRead
函数。
data = thingSpeakRead (12397“NumPoints”, 80,“字段”2,“outputFormat”,“表”);
通过应用去除原始数据中的异常值Hampel
函数。指定窗口大小为6,或者在测量窗口中每个样本的任意一侧大约3分钟的数据。这个设置允许有足够的数据来决定每个点是否为离群值。由于数据是动态的,您的结果可能会根据当前的天气而变化。指定标准偏差的数量为2。如果一个数据点与本地中值的差异大于这个数字,它将被替换为本地中值。
windowSize = 6;numMedians = 2;[filteredData,离群值]= hampel (data.WindSpeedmph、windowSize numMedians);
绘制原始数据和过滤后的数据。显示检测到和移除的异常值。
情节(data.Timestamps data.WindSpeedmph);持有情节(data.Timestamps filteredData);情节(data.Timestamps(异常),data.WindSpeedmph(异常值),“标记”,“广场”,“线型”,“没有”,“颜色”,“黑”);ylabel (的风速(英里/小时));传奇(“原始数据”,过滤数据的,“离群值”);
当前的情节举行
将检测到的异常值数量发送到ThingSpeak通道thingSpeakWrite
函数。改变channelID
和writeAPIKey
将数据发送到您的通道。
channelID = 17504;writeAPIKey =“23 zlgobbu9twhg2h”;thingSpeakWrite (channelID总和(异常值),“WriteKey”, writeAPIKey);
thingSpeakRead
|hampel
(信号处理工具箱)