消除测量数据中的高频噪声
此示例展示了如何设计低通滤波器并使用它来消除测量数据中的高频噪声。高频噪声是由于信号成分的变化速度快于感兴趣的信号而产生的。去除高频噪声可以更紧凑地表示感兴趣的信号,并实现更准确的分析。低通滤波器是消除信号中高频噪声的常用技术。
读取数据
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 Visualizations App ,您还可以添加数据图。更改 channelID
和 writeAPIKey
以将数据发送到您的通道。
channelID = 17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,Output,'Timestamps',time,'WriteKey',writeAPIKey); plot(time,humidity,time,Output); ylabel('Relative Humidity'); legend('Raw Data', 'Filtered Data');
该图显示高频噪声显着降低。
另请参阅
函数
相关主题
- 补偿滤波器引入的延迟和失真 (Signal Processing Toolbox)
- Filter Design and Analysis (DSP System Toolbox)