Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

測定データでの高周波ノイズの除外

この例では、ローパス フィルターを設計し、測定データから高周波ノイズを取り除くために使用する方法を説明します。高周波ノイズは、対象の信号よりも高速で変化する信号成分に起因しています。高周波ノイズを取り除くことによって、対象の信号をより簡潔に表現でき、より正確な解析が可能になります。信号の高周波ノイズを取り除く手法は各種さまざまで、ローパス フィルターの使用はそうした手法の 1 つです。

メモ

この例を実行するには、DSP System Toolbox を使用するライセンスの与えられた MathWorks アカウントにログインしていなければなりません。

データの読み取り

ThingSpeak™ のチャネル 12397 には、マサチューセッツ州ネイティックにある MathWorks® の気象計のデータが含まれています。データは収集され、1 分ごとに ThingSpeak にポストされます。チャネルの Field 3 には相対湿度データが含まれています。

関数 thingSpeakRead を使用してチャネル 12397 からデータを読み取ります。

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

フィルターの設計

フィルターは、不要な成分を信号から取り除く処理です。ローパス フィルターは、信号の低めの周波数成分を通過させ、高めの周波数成分をブロックするように設計されています。DSP System Toolbox™ には、ローパス フィルターを定義するための複数の手法が備わっています。この例では、3 次有限インパルス応答 (FIR) フィルターを設計します。

チャネル 12397 のデータが 1 分ごとにアップロードされるため、サンプリングの頻度は 60 秒に 1 回 (Fs=1/60) です。ローパス フィルターは低周波成分を維持し、24 時間より短い周期をもつ高周波成分を減衰させます。

% Filter type
filtertype = 'FIR';
% Sampling Frequency
Fs = 1/60;
% Filter Order
N = 3;
% Passband frequency
Fpass = 1/(24*60*60);
% Stopband frequency
Fstop = 1/(2*60*60);
% Ripple Factor and Attenuation in stop band
Rp = 0.5;
Astop = 50;

% Design the filter using dsp.LowpassFilter
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 アプリを使用している場合は、データのプロットを追加することもできます。

% Change the Channel ID and the '<write API key>' to send data to your channel
thingSpeakWrite(<channelID>,Output,'Timestamps',time,'WriteKey','<write API key>');
% Only use plot in MATLAB Visualizations
plot(time,humidity,time,Output);
ylabel('Relative Humidity');
legend('Raw Data', 'Filtered Data');

このプロットで、高周波ノイズが大幅に減っていることがわかります。

参考

System object

関数

関連するトピック