主要内容

本页采用了机器翻译。点击此处可查看英文原文。

消除测量数据中的高频噪声

此示例显示如何设计低通滤波器并使用它来消除测量数据中的高频噪声。高频噪声是由于信号分量的变化速度比感兴趣信号的变化速度更快造成的。去除高频噪声可以使感兴趣的信号更紧凑地表示,并实现更准确的分析。低通滤波器是消除信号中高频噪声的常用技术。

读取数据

ThingSpeak™ 通道 12397 包含来自位于马萨诸塞州纳蒂克的 MathWorks® 气象站的数据。每分钟收集一次数据并发布到 ThingSpeak。通道的字段 3 包含相对湿度数据。使用 thingSpeakRead 函数读取数据。

[humidity,time] = thingSpeakRead(12397,'NumPoints',8000,'Fields',3);

设计滤波器

过滤器是一种从信号中去除不需要的成分的过程。低通滤波器旨在让信号中的低频分量通过并阻止高频分量。DSP System Toolbox™ 提供了多种技术来定义低通滤波器。本示例设计了一个三阶有限脉冲响应 (FIR) 滤波器。采样频率为每 60 秒一次 (Fs=1/60),因为通道 12397 中的数据每分钟上传一次。低通滤波器保留低频成分并衰减周期小于 24 小时的高频成分。

filtertype = 'FIR';
Fs = 1/60;
N = 3;
Fpass = 1/(24*60*60);
Fstop = 1/(2*60*60);
Rp = 0.5;
Astop = 50;

LPF = dsp.LowpassFilter('SampleRate',Fs,...
                        'FilterType',filtertype,...
                        'PassbandFrequency',Fpass,...
                        'StopbandFrequency',Fstop,...
                        'PassbandRipple',Rp,...
                        'StopbandAttenuation',Astop);

处理并将数据发送到 ThingSpeak

使用低通滤波器处理相对湿度数据,并使用 thingSpeakWrite 函数将过滤后的湿度数据发送到 ThingSpeak 通道。

Output = step(LPF, humidity);

使用 MATLAB Analysis App,您可以将数据写入通道。如果您正在使用 MATLAB Visualization App,您还可以添加数据图。更改 channelIDwriteAPIKey 以将数据发送到您的通道。

channelID = 17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID,Output,'Timestamps',time,'WriteKey',writeAPIKey);
plot(time,humidity,time,Output);
ylabel('Relative Humidity');
legend('Raw Data', 'Filtered Data');

该图显示高频噪声急剧减少。

另请参阅

函数

主题