删除数据中的离群值
此示例展示了如何使用 Hampel 过滤器检测和删除 ThingSpeak™通道数据中的离群值。该滤波器与中值滤波器密切相关,它有助于去除信号中的离群值,而不会过度平滑数据。
读取数据
使用 thingSpeakRead
函数读取存储在通道22641 中的风速。
data = thingSpeakRead(12397,'NumPoints',80,'Fields',2,'outputFormat','table');
删除离群值
通过应用 hampel
函数删除原始数据中的离群值。将窗口大小指定为 6,或测量窗口两侧大约三分钟的数据。此设置允许有足够的数据来确定每个点是否为离群值。由于数据是动态的,因此您的结果可能会因当前天气而异。将标准差的数量指定为 2。如果数据点与局部中值的差异超过此数字,则将其替换为局部中值。
windowSize = 6; numMedians = 2; [filteredData,outliers]=hampel(data.WindSpeedmph,windowSize,numMedians);
将数据写入 ThingSpeak
使用 thingSpeakWrite
函数将检测到的离群值数量发送到 ThingSpeak通道。更改 channelID
和 writeAPIKey
以将数据发送到您的通道。
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; totalOutliers = sum(outliers) thingSpeakWrite(channelID,totalOutliers,'WriteKey',writeAPIKey);
totalOutliers = 8
另请参阅
函数
thingSpeakRead
|hampel
(Signal Processing Toolbox)