Main Content

ジャイロスコープ データからの高周波数ノイズの除去

この例では、dsp.MedianFilter System object を使用して、ストリーミング信号から高周波数の外れ値を除去する方法を説明します。

dsp.MatFileReader System object を使用してジャイロスコープの MAT ファイルを読み取ります。ジャイロスコープの MAT ファイルには 3 列のデータが格納されています。各列には 7140 サンプルが含まれます。3 列はジャイロスコープのモーション センサーからの "X" 軸、"Y" 軸および "Z" 軸を表します。データの各列に含まれるフレーム数が 10 になるようにフレーム サイズ 714 サンプルを選択します。dsp.MedianFilter System object はウィンドウの長さ 10 を使用します。timescope オブジェクトを作成してフィルター処理された出力を表示します。

reader = dsp.MatFileReader('SamplesPerFrame',714,...
    'Filename','LSM9DS1gyroData73.mat',...
    'VariableName','data');
medFilt = dsp.MedianFilter(10);
scope = timescope('NumInputPorts',1,...
    'SampleRate',119,...
    'YLimits',[-300 300],...
    'ChannelNames',{'Input','Filtered Output'},...
    'TimeSpanSource','Property',...
    'TimeSpan',60,'ShowLegend',true);

dsp.MedianFilter System object を使用して、ジャイロスコープ データをフィルター処理します。フィルター処理された "Z" 軸データを時間スコープに表示します。

for i = 1:10
    gyroData = reader();
    filteredData = medFilt(gyroData);
    scope([gyroData(:,3),filteredData(:,3)]);
end

元のデータにはいくつかの外れ値が含まれています。データを拡大し、メディアン フィルターによってすべての外れ値が除去されることを確認します。

関連するトピック