Main Content

orderspectrum

平均スペクトルと振動信号の次数

説明

spec= orderspectrum(x,fs,rpm)は、fsHz のレートでサンプリングされた入力信号xの平均次数-振幅スペクトルのベクトルspecを計算します。スペクトルを計算するために、orderspectrumはフラット トップ ウィンドウを使用して、定位相のリサンプリングしたxをウィンドウ処理します。

[spec,order] = orderspectrum(x,fs,rpm)は、各平均スペクトル値に対応する次数のベクトルも返します。

[spec,order] = orderspectrum(map,order)は、次数-RPM マップおよび次数のベクトルから開始し、平均次数-振幅スペクトルのベクトルを計算します。rpmordermapを使用して、mapおよびorderを計算します。mapは線形にスケーリングされなければなりません。返される振幅はmapのものと同じです。返されるスペクトルは線形にスケーリングされます。

[spec,order] = orderspectrum(map,order,'Amplitude',amp)は、振幅のタイプを指定して、次数-RPM マップから始まる平均次数-振幅スペクトルをいつ計算するかを考慮します。

出力引数を設定せずにorderspectrum(___)を使用すると、線形にスケーリングされた次数スペクトルの RMS 振幅が現在の Figure にプロットされます。

すべて折りたたむ

600 Hz で 5 秒間サンプリングされたシミュレーション信号を作成します。テスト中のシステムは、観察期間中に回転速度を 1 秒あたり 10 回転から 40 回転に上昇させます。

タコメーターの読み取り値を生成します。

fs = 600; t1 = 5; t = 0:1/fs:t1; f0 = 10; f1 = 40; rpm = 60*linspace(f0,f1,length(t));

信号は、1、0.5、4 および 6 の次数をもつ、調和的に関連した 4 つのチャープで構成されています。次数 4 のチャープの振幅は他のチャープの振幅の 2 倍です。チャープを生成するために、台形則を使用して位相を回転速度の積分で表します。

o1 = 1; o2 = 0.5; o3 = 4; o4 = 6; ph = 2*pi*cumtrapz(rpm/60)/fs; x = [1 1 2 1]*cos([o1 o2 o3 o4]'*ph);

信号の次数-RPM マップを可視化します。

rpmordermap(x,fs,rpm)

Figure Order Map contains objects of type uimenu, uitoolbar, uiflowcontainer.

信号の平均次数スペクトルを可視化します。スペクトルのピークは次数-RPM マップのリッジに対応します。

orderspectrum(x,fs,rpm)

Figure contains an axes object. The axes object with title Average Order Spectrum contains an object of type line.

ヘリコプターのコクピットに設置された加速度計から取得したシミュレーション データを解析します。

ヘリコプターのデータを読み込みます。振動測定値vibは、500 Hz のレートで 10 秒間サンプリングされています。データには線形トレンドがあります。トレンドを除去して、トレンドによる次数推定の質の低下を防ぎます。

load('helidata.mat') vib = detrend(vib);

非線形 RPM プロファイルをプロットします。ローターは、最大回転速度である 1 分あたり 27,600 回転に達するまで回転数を上昇させ、その後降下させます。

plot(t,rpm) xlabel('Time (s)') ylabel('RPM')

Figure contains an axes object. The axes object contains an object of type line.

信号の平均次数スペクトルを計算します。既定の次数分解能を使用します。

orderspectrum(vib,fs,rpm)

Figure contains an axes object. The axes object with title Average Order Spectrum contains an object of type line.

rpmordermapを使用して、より細かい次数分解能で計算を繰り返します。次数が低いほど、より明確に分解されます。

[map,order] = rpmordermap(vib,fs,rpm,0.005); orderspectrum(map,order)

Figure contains an axes object. The axes object with title Average Order Spectrum contains an object of type line.

各推定次数のパワー レベルを計算します。結果をデシベルで表示します。

[map,order] = rpmordermap(vib,fs,rpm,0.005,'Amplitude','power'); spec = orderspectrum(map,order); plot(order,pow2db(spec)) xlabel('Order Number') ylabel('Order Power Amplitude (dB)') gridon

Figure contains an axes object. The axes object contains an object of type line.

入力引数

すべて折りたたむ

入力信号。行ベクトルまたは列ベクトルとして指定します。

例:cos(pi/4*(0:159))+randn(1,160)は、ホワイト ガウス ノイズに含まれる正弦波を指定します。

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

回転速度。1 分あたりの回転数で表される正の値のベクトルとして指定します。rpmは、xと同じ長さをもっていなければなりません。

  • タコメーター パルス信号がある場合、tachorpmを使用してrpmを直接抽出します。

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

例:100:10:3000は、システムが、最初は 1 分あたり 100 回転で回転し、その後 10 回転ずつ回転数を上げて 1 分あたり 3000 回転になるように指定します。

次数-RPM マップ。行列として指定します。rpmordermapを使用して、次数-RPM マップを計算します。

次数-RPM マップ構文の次数。ベクトルとして指定します。orderの長さは、mapの行数と等しくなければなりません。

次数-RPM マップの振幅。'rms''peak''power'のいずれかとして指定します。

  • 'rms'— 次数-RPM マップが各推定次数の平方根平均二乗振幅を使用すると仮定します。

  • 'peak'— 次数-RPM マップが各推定次数のピーク振幅を使用すると仮定します。

  • 'power'— 次数-RPM マップが各推定次数のパワー レベルを使用すると仮定します。

出力引数

すべて折りたたむ

平均次数-振幅スペクトル。線形スケールの平方根平均二乗 (RMS) 振幅のベクトルとして返されます。入力引数としてmapおよびorderを使用し、rpmordermapによるmapの計算時に'Amplitude''power'に設定すると、orderspectrumはパワー単位のspecを返します。

出力次数。実数ベクトルとして返されます。

参照

[1]布兰德,安德斯。噪音和振动分析: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.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2016b で導入