Main Content

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

orderspectrum

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

説明

spec = orderspectrum(x,fs,rpm) は、fs Hz のレートでサンプリングされた入力信号 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, xlabel Order Number, ylabel Order RMS Amplitude 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 with xlabel Time (s), ylabel RPM contains an object of type line.

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

orderspectrum(vib,fs,rpm)

Figure contains an axes object. The axes object with title Average Order Spectrum, xlabel Order Number, ylabel Order RMS Amplitude 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, xlabel Order Number, ylabel Order RMS Amplitude 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)')
grid on

Figure contains an axes object. The axes object with xlabel Order Number, ylabel Order Power Amplitude (dB) 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] 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.

拡張機能

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

バージョン履歴

R2016b で導入