平均(移動平均)を移動させる:図地球物理学的異常で、ウィンドウサイズがウィンドウ内で、すべての外れ値平均を選択し、中心点例外としてウィンドウの平均値です。プレスピッチ線距離または移動ウィンドウは、平均的な方法は、このプロセスは、移動平均と呼ばれ、処理が完了全体像まで繰り返されます。
平均ローパスフィルタを移動同等、この方法は、一般に、ログデータ処理及び解釈の探査と重力に使用されます。
長さnのスライディングウィンドウは、次に、NポイントのFIRフィルタを介して、移動平均データを許可する場合、フィルタタップ係数が1であり、そして移動平均平滑化動作シーケンスが再生されとります。
このようなフィルタtsmovavg及び方法のようないくつかのMatlabの移動平均法は、実施することが可能です。
通常の移動平均
移動平均フィルタ通常の無権利の重量に基づいて、フィルタ機能についてはありますが、あなたがすることができdoc filter
、詳細な情報を表示する、私たちはここにいるだけの単純な移動平均なぜなら、このレコードで単純移動平均法。
seqOriginal = rand(1,100);
windowSize = x;
seqFilter = filter( ones(1, windowSize) / windowSize, 1, seqOriginal );
上記のコマンドは、実際に計算されます。
x表示seqOriginal, y表示seqFilter, a表示windowSize。
y(1) = (1 / a) * x(1);
y(2) = (1 / a) * x(2) + (1 / a) * x(1);
...
y(a) = (1 / a) * x(a) + (1 / a) * x(a - 1) + ... + (1 / a) * x(1);
...
y(i) = (1 / a) * x(i) + (1 / a) * x(i - 1) + ... + (1 / a) * x(i - a + 1);
...
注:この方法は、元データの傾向に対して点とwindowSize点の前に計算された平均ので、出力は遅れがあることがあるので。データがより少ない場合、大きな影響があってもよいです。
移動平均センター
平均は、平均、スライディングウィンドウの平均値算出の中心のデータ点を移動中心移動させる方法があります。これは、(便宜上、本明細書虚数、奇数のセットについて)上記の計算となります。
y(1) = (1 / a) * x(1) + (1 / a) * x(2) + ... + (1 / a) * x((a+1) / 2);
y(2) = (1 / a) * x(1) + (1 / a) * x(2) + ... + (1 / a) * x((a+1) / 2 + 1);
...
y((a + 1) / 2) = (1 / a) * x(1) + (1 / a) * x(2) + ... + (1 / a) * x((a+1) / 2) + (1 / a) * x(a);
...
y(i) = (1 / a) * x(i - (a - 1) / 2) + (1 / a) * x(i - (a - 1) / 2 + 1) + ... + (1 / a) * x(i) + ... + (1 / a) * x(i + (a+1) / 2);
...
Matlabのステートメントに式を変換します:
seqOriginal = rand(1,100);
windowSize = x;
seq1 = filter( ones(1, windowSize / 2 + 1) / windowSize, 1, seqOriginal );
seq2 = filter( ones(1, windowSize / 2 + 1) / windowSize, 1, fliplr(seqOriginal) );
seqFilter = seq1 + fliplr(seq2) - 1 / windowSize * seqOriginal;
使いやすくするため、その機能は、関数呼び出しを記述することです。
%fun_CenterAverageFilter
%--
% seqFilter = fun_CenterAverageFilter(seqOriginal, windowSize)
% 中心滑动平均
%--
% seqFilter |Matrix| 滤波后输出序列
% seqOriginal |Matrix| 原始序列
% windowSize |Double| 滑动窗口
%--
%Author: Liu Tong
%History:
%----
%Rev: 1.0
%Date: 2016/12/22
% create.
%--
function seqFilter = fun_CenterAverageFilter(seqOriginal, windowSize)
seq1 = filter( ones(1, windowSize / 2 + 1) / windowSize, 1, seqOriginal );
seq2 = filter( ones(1, windowSize / 2 + 1) / windowSize, 1, fliplr(seqOriginal) );
seqFilter = seq1 + fliplr(seq2) - 1 / windowSize * seqOriginal;
end