Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

dsp.MovingRMS

移動平方根平均二乗

説明

dsp.MovingRMS System object™ は、時間の経過に沿って入力信号の移動平方根平均二乗 (RMS) を各チャネルで個別に計算します。このオブジェクトでは、スライディング ウィンドウ法または指数の重み付け法のどちらかを使用して移動 RMS を計算します。スライディング ウィンドウ法では、データ上で指定の長さのウィンドウをサンプルごとに移動させ、ウィンドウ内のデータの RMS を計算します。指数の重み付け法では、オブジェクトはデータ サンプルを二乗し、一連の重み係数を掛け、重み付けしたデータの合計を求めます。次に、オブジェクトは合計の平方根を取ることで RMS を計算します。これらの方法の詳細については、アルゴリズムを参照してください。

入力の移動 RMS を計算するには、次のようにします。

  1. dsp.MovingRMS オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

movRMS = dsp.MovingRMS は、既定のプロパティを使用して、移動 RMS オブジェクト movRMS を返します。

movRMS = dsp.MovingRMS(Len)WindowLength プロパティを Len に設定します。

MovRMS = dsp.MovingRMS(Len,Overlap) は、WindowLength プロパティを Len に、OverlapLength プロパティを Overlap に設定します。

movRMS = dsp.MovingRMS(Name,Value) は、Name,Value ペアを使用して追加のプロパティを指定します。指定していないプロパティは既定値になります。

例: movRMS = dsp.MovingRMS('Method','Exponential weighting','ForgettingFactor',0.9);

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

移動 RMS メソッド。'Sliding window' または 'Exponential weighting' として指定します。

  • 'Sliding window'SpecifyWindowLength によって指定された長さのウィンドウを入力データ上で各チャネルに沿って移動させます。オブジェクトは、ウィンドウが移動する各サンプルについて、ウィンドウ内のデータの RMS を計算します。

  • 'Exponential weighting' — オブジェクトはサンプルの二乗と一連の重み係数を乗算します。データが古くなるほど、重み係数の大きさは指数的に小さくなります (0 になることはありません)。RMS を計算するために、このアルゴリズムは重み付けしたデータを合計し、その合計の平方根を取ります。

これらの方法の詳細については、アルゴリズムを参照してください。

ウィンドウの長さを指定するフラグ。スカラーの boolean として指定します。

  • true — スライディング ウィンドウの長さが WindowLength プロパティで指定した値と等しくなります。

  • false — スライディング ウィンドウの長さが無限になります。このモードでは、RMS は現在のサンプルと以前のすべてのサンプルを使用して計算されます。

依存関係

このプロパティは Method'Sliding window' に設定した場合に適用されます。

サンプルのスライディング ウィンドウの長さ。正のスカラー整数として指定します。

依存関係

このプロパティは Method'Sliding window'SpecifyWindowLengthtrue に設定した場合に適用されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

スライディング ウィンドウ間のオーバーラップの長さ。非負の整数として指定します。オーバーラップの長さの値は、[0, WindowLength − 1] の範囲で変化します。指定しない場合、オーバーラップの長さは WindowLength − 1 となります。

依存関係

このプロパティは Method'Sliding window'SpecifyWindowLengthtrue に設定した場合に適用されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

指数の重み付けの係数。(0,1] の範囲の正の実数スカラーとして指定します。

忘却係数 0.1 よりも忘却係数 0.9 の方が古いデータに対する重みが大きくなります。忘却係数が 1.0 の場合は無限に記憶します。過去のサンプルに対する重みはすべて同じになります。

このプロパティは調整可能であるため、その値はオブジェクトがロックされている場合でも変更できます。

調整可能: Yes

依存関係

このプロパティは Method'Exponential weighting' に設定した場合に適用されます。

データ型: single | double

使用法

説明

y = movRMS(x) は、スライディング ウィンドウ法または指数の重み付け法のどちらかを使用して、入力信号 x の移動 RMS を計算します。

入力引数

すべて展開する

データ入力。ベクトルまたは行列として指定します。x が行列の場合、各列が個別のチャネルとして扱われます。移動 RMS は各チャネルに沿って計算されます。

オブジェクトは可変サイズの入力を受け入れます。オブジェクトがロックされると、各入力チャネルのサイズは変更できますが、チャネルの数は変更できません。

データ型: single | double
複素数のサポート: あり

出力引数

すべて展開する

入力信号の移動 RMS。ベクトルまたは行列として返されます。

m 行 n 列のサイズの信号をオブジェクトに入力し、Method'Sliding window' に、SpecifyWindowLengthtrue に設定すると、出力は ceil(m/ホップ サイズ) 行 n 列の上限サイズをもちます。ホップ サイズは、ウィンドウの長さからオーバーラップの長さを引いた値です。出力が m 行 n 列のサイズをもつ場合もあります。

このオブジェクトからコードを生成した場合、生成したコードの出力の可変サイズの動作は、入力フレームの長さと入力信号が固定サイズか可変サイズかによって異なります。詳細については、コード生成を参照してください。

データ型: single | double
複素数のサポート: あり

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

dsp.MovingRMS オブジェクトを使用して、可変振幅を持つノイズを含む矩形波信号の移動 RMS を計算します。

初期化

movrmsWin オブジェクト、movrmsWin_overlap オブジェクト、および movrmsExp オブジェクトを設定します。movrmsWin は、ウィンドウの長さを 20 サンプルとしてスライディング ウィンドウ法を使用します。既定のオーバーラップの長さは 19 サンプルで、これは指定のウィンドウ長より 1 サンプル分小さくなります。movrmsWin_overlap はウィンドウの長さを 20 サンプルとし、オーバーラップの長さは 15 サンプルです。movrmsExp は忘却係数を 0.995 として指数的な重み付け法を使用します。

出力を表示するための時間スコープを作成します。

FrameLength = 10;
Fs = 100;
movrmsWin = dsp.MovingRMS(20);
movrmsWin_overlap = dsp.MovingRMS(20,15);
movrmsExp = dsp.MovingRMS('Method','Exponential weighting',...
    'ForgettingFactor',0.995);
scope  = timescope('SampleRate',[Fs,Fs,Fs/(20-15),Fs],...
    'TimeSpanOverrunAction','Scroll',...
    'TimeSpanSource','Property',...
    'TimeSpan',100,...
    'ShowGrid',true,...
    'YLimits',[-1.0 5.5]);
title = 'Moving RMS';
scope.Title = title;
scope.ChannelNames = {'Original Signal',...
    'Sliding window of 20 samples with default overlap',...
    'Sliding window of 20 samples with an overlap of 15 samples',...
    'Exponential weighting with forgetting factor of 0.995'};

RMS の計算

ノイズを含む矩形波信号を生成します。特定のフレーム数の後、矩形波の振幅を変化させます。スライディング ウィンドウ法および指数の重み付け法をこの信号に対して適用します。時間スコープに出力が表示されます。

count = 1;
Vect = [1/8 1/2 1 2 3 4];
for index = 1:length(Vect)
    V = Vect(index);
    for i = 1:160
        x = V + 0.1 * randn(FrameLength,1);
        y1 = movrmsWin(x);
        y2 = movrmsWin_overlap(x);
        y3 = movrmsExp(x);
        scope(x,y1,y2,y3);
    end
end

アルゴリズム

すべて展開する

参照

[1] Bodenham, Dean. “Adaptive Filtering and Change Detection for Streaming Data.” PH.D. Thesis. Imperial College, London, 2012.

拡張機能

バージョン履歴

R2016b で導入

すべて展開する