このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
測定データ内の高周波ノイズを除去
この例では、ローパス フィルターを設計し、それを使用して測定データ内の高周波ノイズを除去する方法を示します。高周波ノイズは、対象となる信号よりも速く変化する信号成分によって発生します。高周波ノイズを除去することで、対象の信号をよりコンパクトに表現し、より正確な解析が可能になります。ローパス フィルターは、信号内の高周波ノイズを除去するための一般的な手法です。
データの読み取り
ThingSpeak ™チャネル12397 には、マサチューセッツ州ネイティックにある MathWorks ® 気象観測所からのデータが含まれています。データは 1 分ごとに収集され、ThingSpeak に投稿されます。チャネルのフィールド 3 には相対湿度データが含まれます。thingSpeakRead
関数を使用してデータを読み取ります。
[humidity,time] = thingSpeakRead(12397,'NumPoints',8000,'Fields',3);
フィルター設計
フィルターは信号から不要な要素を除去するプロセスです。ローパス フィルターは、信号内の低周波成分を通過させ、高周波成分をブロックするように設計されています。DSP System Toolbox ™ は、ローパス フィルターを定義するための複数の手法を提供します。この例では、3 次有限インパルス応答 (FIR) フィルターを設計します。チャネル12397 のデータは 1 分ごとにアップロードされるため、サンプリング頻度は 60 秒に 1 回 (Fs=1/60) になります。ローパス フィルターは、低周波成分を保持し、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 アプリを使用すると、データをチャネルに書き込むことができます。MATLAB Visualizations アプリを使用している場合は、データのプロットを追加することもできます。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)
- フィルターの設計と解析 (DSP System Toolbox)