ドキュメンテーション

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

tachorpm

タコメーター パルスからの RPM 信号の抽出

構文

rpm = tachorpm(x,fs)
[rpm,t,tp] = tachorpm(x,fs)
[___] = tachorpm(x,fs,Name,Value)
tachorpm(___)

説明

rpm = tachorpm(x,fs) では回転速度信号 rpmfs Hz のレートでサンプリングされたタコメーター パルス信号ベクトル x から抽出されます。

タコメーター パルス信号がない場合、rpmtrack を使用して振動信号から rpm を抽出します。

[rpm,t,tp] = tachorpm(x,fs) では、時間ベクトル t と検出されたパルスの場所 tp も返さます。

[___] = tachorpm(x,fs,Name,Value) では、Name,Value のペアと前述のいずれかの構文を使用してオプションを指定します。

出力引数のない tachorpm(___) では、生成された RPM 信号およびタコメーター信号と検出されたパルスがプロットされます。

すべて折りたたむ

300 Hz でサンプリングされたタコメーターをシミュレートした信号を読み込みます。

load tacho

tachorpm を既定の値で使用して、RPM 信号を計算および可視化します。

tachorpm(Yn,fs)

RPM のピークを取得するため、あてはめる点を増やします。点が多すぎると、過適合になります。この結果は、ピーク周囲の領域にズーム インすることによって確認します。

tachorpm(Yn,fs,'FitPoints',600)

axis([0.47 0.65 1320 1570])

より良い結果を得るために適度な点の数を選択します。

tachorpm(Yn,fs,'FitPoints',100)

ホワイト ガウス ノイズをタコメーター信号に付加します。既定のパルス検出のメカニズムは、パルスを捉えずに、ギザギザになった信号のプロファイルを返します。この結果を 2 秒の時間間隔にズーム インすることによって確認します。

rng default
wgn = randn(size(Yn))/10;
Yn = Yn+wgn;

[rpm,t,tp] = tachorpm(Yn,fs,'FitPoints',100);

figure
plot(t,Yn,tp,mean(interp1(t,Yn,tp))*ones(size(tp)),'+')
hold on
sl = statelevels(Yn);
plot(t,sl(1)*ones(size(t)),t,sl(2)*ones(size(t)))
hold off
xlim([9 10])

パルスの検出を向上するために、状態レベルを調整します。

sl = [0 0.75];

[rpm,t,tp] = tachorpm(Yn,fs,'FitPoints',100,'StateLevels',sl);

plot(t,Yn,tp,mean(interp1(t,Yn,tp))*ones(size(tp)),'+')
hold on
plot(t,sl(1)*ones(size(t)),t,sl(2)*ones(size(t)))
hold off
xlim([9 10])

入力引数

すべて折りたたむ

タコメーター パルス信号。行ベクトルまたは列ベクトルとして指定します。

例: double(chirp((-1.5:1/2e2:1.5),14,1.1,8,'quadratic')>0.98) は、200 Hz で 3 秒間サンプリングされ、2 次のランナップまたはコーストダウンのテスト時に取得されたタコメーター信号に類似します。

データ型: double | single

サンプルレート。正のスカラーとして Hz 単位で指定します。

データ型: double | single

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'PulsesPerRev',3,'OutputFs',1e3 は、1 回転あたり 3 つのタコメーター パルスがあり、返される RPM 信号が 1 kHz でサンプリングされることを指定します。

1 回転あたりのタコメーター パルス数。'PulsesPerRev' と実数スカラーとで構成されるコンマ区切りのペアとして指定します。

データ型: double | single

パルスを識別するために使用される状態レベル。'StateLevels' と、2 要素実数ベクトルとで構成されるコンマ区切りのペアとして指定します。ベクトルの最初の要素は Low 状態レベルに対応し、2 番目の要素は High 状態レベルに対応します。すべてのパルスのエッジが状態レベルの 10% 以内で交差するように両方の状態レベルを選択します。このオプションを指定しない場合、tachorpm は、ヒストグラム法を使用して、関数 statelevels と同様に自動的にレベルを計算します。

データ型: double | single

出力のサンプルレート。'OutputFs' および実数スカラーで構成されるコンマ区切りペアとして指定します。

データ型: double | single

あてはめ手法。'FitType' と、'smooth' または 'linear' のいずれかで構成されたコンマ区切りのペアとして指定します。

  • 'smooth' — 最小二乗 B スプラインをパルス RPM 値にあてはめます。

  • 'linear' — パルス RPM 値の間で線形に内挿します。

データ型: single | double

B スプライン ブレークポイント。'FitPoints' および実数スカラーで構成されるコンマ区切りペアとして指定します。ブレークポイントの数は、曲線の滑らかさと基になるデータへの近接性のトレードオフに影響します。ブレークポイントの選択が多すぎると、過適合になる場合があります。'FitType''linear' に設定されている場合、この引数は無視されます。

データ型: double | single

出力引数

すべて折りたたむ

回転速度。1 分あたりの回転数で表される正の値のベクトルとして返されます。rpm は、x と同じ長さです。

時間ベクトル。秒単位表記の正の値のベクトルとして返されます。

パルスの位置。秒単位表記の正の値のベクトルとして返されます。

アルゴリズム

関数 tachorpm は以下のステップを実行します。

  1. statelevels を使用して、タコメーター信号の Low および High の状態を決定します。

  2. risetimefalltime を使用して、各パルスの開始および終了時間を検出します。次に、各パルスの時間を見つけるために、これらの測定値を平均します。

  3. diff を使用してパルスの中心間の時間間隔を求めます。さらに、RPM = 60 / Δt を使用してパルス間の中点で RPM 値を計算します。

  4. 'FitType''smooth' に指定した場合、関数はスプラインを使用して最小二乗近似を実行します。'FitType''linear' に指定した場合、関数は interp1 を使用して線形内挿を実行します。

参照

[1] Brandt, Anders. Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Chichester, UK: John Wiley & Sons, 2011.

[2] Vold, Håvard, and Jan Leuridan. “High Resolution Order Tracking at Extreme Slew Rates Using Kalman Tracking Filters.” Shock and Vibration. Vol. 2, 1995, pp. 507–515.

R2016b で導入