メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

測定データ内の高周波ノイズを除去

この例では、ローパス フィルターを設計し、それを使用して測定データ内の高周波ノイズを除去する方法を示します。高周波ノイズは、対象となる信号よりも速く変化する信号成分によって発生します。高周波ノイズを除去することで、対象の信号をよりコンパクトに表現し、より正確な解析が可能になります。ローパス フィルターは、信号内の高周波ノイズを除去するための一般的な手法です。

データの読み取り

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 アプリを使用している場合は、データのプロットを追加することもできます。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');

このグラフは高周波ノイズが劇的に減少したことを示しています。

参考

関数

トピック