ドキュメンテーション

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

tsa

構文

ta = tsa(x,fs,tp)
ta = tsa(x,t,tp)
ta = tsa(xt,tp)
ta = tsa(___,Name,Value)
[ta,t,p,rpm] = tsa(___)
tsa(___)

説明

ta = tsa(x,fs,tp) は、tp で指定されたパルス時間にレート fs でサンプリングされた信号 x の時間同期平均を返します。

ta = tsa(x,t,tp) は、t に格納された時間値でサンプリングされた x の時間同期平均を返します。

ta = tsa(xt,tp) は、MATLAB® timetable xt に格納された信号の時間同期平均を返します。

ta = tsa(___,Name,Value) は、名前と値のペアの引数を使用して、上記の任意の構文に追加オプションを指定します。たとえば、シャフトの 1 回転あたりのタコメーター パルス数を指定したり、時間領域または周波数領域どちらの信号の平均を求めるかを選択したりできます。

[ta,t,p,rpm] = tsa(___) は、ta に対応するサンプル時間のベクトル t、パルス値のベクトル pta に対応する定数回転速度 (分あたりの回転数) rpm も返します。

出力引数なしの tsa(___) は、現在の Figure の各信号セグメントに対応する時間同期平均信号および時間領域信号をプロットします。

すべて折りたたむ

ノイズの多い正弦波の時間同期平均を計算します。

ホワイト ガウス ノイズに含まれ正弦波で構成される信号を生成します。信号は、500 Hz で 20 秒間サンプリングされます。10 Hz の正弦波周波数と 0.01 のノイズ分散を指定します。信号の 1 周期をプロットします。

fs = 500;
t = 0:1/fs:20-1/fs;

f0 = 10;
y = sin(2*pi*f0*t) + randn(size(t))/10;

plot(t,y)
xlim([0 1/f0])

信号の時間同期平均を計算します。信号を同期させるために、正弦波と同じ周期をもつ一連のパルスを使用します。tsa の組み込み機能を使用して結果を表示します。

tPulse = 0:1/f0:max(t);

tsa(y,fs,tPulse)

指数的に減衰する 2 次チャープから構成される信号を生成します。信号は 1 kHz で 2 秒間サンプリングされます。チャープの初期周波数は 2 Hz で、最初の 1 秒後に 280 Hz まで増大します。減衰の特性時間は 1/2 秒です。信号をプロットします。

fs = 1e3;
t = 0:1/fs:2;

x = exp(-2*t').*chirp(t',2,1,28,'quadratic');

plot(t,x)

時間ベクトルを使用して duration 配列を作成します。この duration 配列と信号で timetable を構築します。信号のピークの位置を使用してパルス時間を判別します。時間同期平均を表示します。

ts = seconds(t)';
tx = timetable(ts,x);

[~,lc] = findpeaks(x,t);
tsa(tx,lc)

時間同期平均を計算します。出力引数の型を表示します。サンプル時間は duration 配列に格納されます。

[xta,xt,xp,xrpm] = tsa(tx,lc);
whos x*
  Name         Size            Bytes  Class        Attributes

  x         2001x1             16008  double                 
  xp           9x1              1015  timetable              
  xrpm         1x1                 8  double                 
  xt           9x1                74  duration               
  xta          9x1              1013  timetable              

duration 配列を datetime ベクトルに変換します。datetime ベクトルと信号を使用して timetable を構築します。時間同期平均を計算しますが、今度は、15 回転分の平均を求めます。

出力引数の型を表示します。入力 timetable が datetime ベクトルを使用していても、ここでも、サンプル時間は duration 配列に格納されます。

dtb = datetime(datevec(ts));
dtt = timetable(dtb,x);

nr = 15;
tsa(dtt,lc,'NumRotations',nr)

[dta,dt,dp,drpm] = tsa(dtt,lc,'NumRotations',nr);
whos d*
  Name         Size            Bytes  Class        Attributes

  dp         135x1              3031  timetable              
  drpm         1x1                 8  double                 
  dt         135x1              1082  duration               
  dta        135x1              3029  timetable              
  dtb       2001x1             32017  datetime               
  dtt       2001x1             48882  timetable              

スイッチオフ後ファン ブレードが遅くなっていくときのファン ブレードの位置の時間同期平均を計算します。

2400 rpm で回転する卓上扇風機をオフにします。空気抵抗 (ベアリングの摩擦からの寄与は無視できるとします) により約 5 秒でファンのローターが停止します。高速カメラでファン ブレードの 1 つの x 座標を 1 kHz のレートで測定します。

fs = 1000;
t = 0:1/fs:5-1/fs;

rpm0 = 2400;

このファン ブレードを、ローターを中心として半径 10 cm を回転する質点として理想化します。ブレードには速度に比例する抵抗力がかかり、その結果、位相角は次の式で求められます。

ここで、 は初期周波数、 秒は減衰時間です。

a = 0.1;
f0 = rpm0/60;
T = 0.75;

phi = 2*pi*f0*T*(1-exp(-t/T));

x 座標と y 座標を計算し、プロットします。ホワイト ガウス ノイズを付加します。

x = a*cos(phi) + randn(size(phi))/200;
y = a*sin(phi) + randn(size(phi))/200;

plot(t,x,t,y)

同期される信号を求めます。関数 tachorpm を使用して、パルス時間を見つけます。検索する時間を 2.5 秒までに制限します。回転速度をプロットして、その指数関数的減衰を確認します。

[rpm,~,tp] = tachorpm(x(t<2.5),fs);
tachorpm(x(t<2.5),fs)

正弦波の周期に対応する時間同期平均信号を計算し、プロットします。周波数領域で平均化を実行します。

clf
tsa(x,fs,tp,'Method','fft')

入力引数

すべて折りたたむ

入力信号。ベクトルで指定します。

例: cos(pi/4*(0:159))+randn(1,160) は単一チャネルの行ベクトル信号です。

データ型: single | double

サンプルレート。正のスカラーで指定します。

データ型: single | double

パルス時間。スカラーまたはベクトルで指定します。

  • スカラー — 回転が起こる定数の時間間隔

  • ベクトル — 定数の回転位相を定義する非負の厳密に増加する瞬時

タコメーター信号からタコメーターのパルス時間を抽出するために tachorpm を使用します。

データ型: single | double

サンプル時間。ベクトル、duration スカラー、または duration 配列で指定します。

  • スカラー — x の連続するサンプル間の時間間隔

  • ベクトルまたは duration 配列 — x の各要素に対応する時点

データ型: single | double | duration

入力 timetable。xt には、増加する有限の行時間と、ベクトルで構成される変数を 1 つのみ含めなければなりません。

timetable が欠損している場合や時間点が重複している場合、欠損または重複する時間および非等間隔の時間をもつ timetable の整理 (MATLAB)のヒントを使用して修正できます。

例: timetable(seconds(0:4)',randn(5,2)) は 1 Hz で 4 秒間サンプリングされた 2 チャネルの確率変数を指定します。

データ型: single | double

名前と値のペアの引数

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

例: 'Method','pchip','ResampleFactor',10 は、信号を 10 の係数でアップサンプリングし、区分的 3 次エルミート内挿を使用して時間領域で平均化することを指定します。

内挿方式。'InterpMethod' と次の値のいずれかで構成されるコンマ区切りペアとして指定します。

  • 'linear' — 線形内挿を実行し時間領域で平均化します。

  • 'spline' — 3 次スプライン内挿を実行し時間領域で平均化します。

  • 'pchip' — 区分的 3 次エルミート内挿を実行し時間領域で平均化します。

  • 'fft' — 周波数領域で平均化を実行します。

データ型: char

ta におけるシャフトの回転数。'NumRotations' と正の整数スカラーで構成されるコンマ区切りのペアとして指定します。

データ型: single | double

シャフトの回転あたりの時点数。'PulsesPerRotation' と正のスカラーで構成されるコンマ区切りのペアとして指定します。

データ型: single | double

サンプルレートを上げる係数。'ResampleFactor' と正の整数スカラーで構成されるコンマ区切りのペアとして指定します。

データ型: single | double

出力引数

すべて折りたたむ

時間同期信号平均。ベクトルまたは timetable として返されます。tsa への入力が timetable である場合、ta も timetable になります。

  • 入力 timetable の時間値が duration 配列として格納されている場合、ta の時間値も duration 配列です。

  • 入力 timetable の時間値が datetime 配列として格納されている場合、ta の時間値は秒単位で表される duration 配列です。

サンプル時間。ベクトルまたは duration 配列として返されます。

  • tsa への入力が timetable で、時間値が duration 配列として格納されている場合、t の形式は、入力時間値と同じです。

  • tsa への入力が timetable で、時間値が datetime 配列として格納されている場合、t は秒単位で表される duration ベクトルです。

  • tsa への入力が数値ベクトルで、入力サンプル時間 tduration スカラーまたは duration 配列に格納されている場合、t は入力 t と同じ単位を持つ duration 配列です。

位相値。ベクトルまたは回転数単位で表される timetable として返されます。

tsa への入力が timetable である場合、p も timetable です。p の値は、ta の時間値と同じです。

定数回転速度。1 分あたりの回転数で表されるスカラーとして返されます。

アルゴリズム

入力信号、サンプルレート、一連のタコメーター パルスが与えられると、tsa は以下のステップを実行します。

  1. タコメーター パルスと 'PulsesPerRotation' で指定された値に基づいてサイクルの開始時間と終了時間を決定します。

  2. 'ResampleFactor' で指定された値に基づいて入力信号をリサンプリングします。

  3. 'Method' で指定されたオプションに基づいてリサンプリングした信号を平均化します。

    • 'Method''fft' に設定した場合、関数は次の処理を行います。

      1. 信号をさまざまなサイクルに対応するセグメントに分割します。

      2. 各セグメントの離散フーリエ変換を計算します。

      3. すべての変換が同じ長さになるように長すぎる変換を切り捨てます。

      4. スペクトルを平均化します。

      5. 平均の逆離散フーリエ変換を計算して時間領域に変換します。

    • 'Method' が時間領域方式の 1 つに設定されている場合、関数は次の処理を行います。

      1. 指定された方式を使用して、信号をさまざまなサイクルに対応する一定間隔のサンプルのグリッドに内挿します。

      2. 'NumRotations' で指定された値に基づいてリサンプリングした信号のセグメントを連結します。

      3. すべてのセグメントの平均を計算します。

参照

[1] Bechhoefer, Eric, and Michael Kingsley. "A Review of Time-Synchronous Average Algorithms." Proceedings of the Annual Conference of the Prognostics and Health Management Society, San Diego, CA, September-October, 2009.

R2017b で導入