ドキュメンテーション

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

pentropy

信号のスペクトル エントロピー

構文

se = pentropy(xt)
se = pentropy(x,sampx)
se = pentropy(p,fp,tp)
se = pentropy(___,Name,Value)
[se,t] = pentropy(___)
pentropy(___)

説明

se = pentropy(xt) は、単一変数、単一列 timetable xtスペクトル エントロピーtimetable se として返します。pentropy では、pspectrum の既定のオプションを使用して xt のスペクトログラムを計算します。

se = pentropy(x,sampx) は、sampx のレートまたは時間間隔でサンプリングされたベクトル x のスペクトル エントロピーを、ベクトルとして返します。

se = pentropy(p,fp,tp) は、パワー スペクトログラム p を使用して、スペクトログラム周波数および時間ベクトル fp および tp と共にスペクトル エントロピーを返します。

pentropy が適用する既定の pspectrum オプションを受け入れる代わりに pspectrum のオプションをカスタマイズする場合は、この構文を使用します。

se = pentropy(___,Name,Value) は、名前と値のペアの引数を使用して追加プロパティを指定します。オプションには、瞬間と全信号のエントロピー、ホワイト ノイズ エントロピーによるスケーリング、周波数範囲、および時間範囲が含まれます。

Name,Value は、これより前の構文の任意の入力引数と共に使用できます。

[se,t] = pentropy(___) は、スペクトル エントロピー se を時間ベクトルまたは timetablet と共に返します。setimetable の場合、ttimetable se の行時間と等しくなります。これらの出力引数は、これより前の構文の任意の入力引数と共に使用できます。

pentropy(___) は次のいずれかです。

  • 時間に対してスペクトル エントロピーをプロット (Instantaneoustrue)。

  • スペクトル エントロピーのスカラー値を出力 (Instantaneousfalse)。

すべて折りたたむ

timetable としておよび時系列として表される信号のスペクトル エントロピーをプロットします。

正規分布による無作為系列を生成します (ホワイト ノイズ)。

xn = randn(1000,1);

時間ベクトル t を作成して duration ベクトル tdur に変換します。tdurxntimetable 内で結合させます。

fs = 10;
ts = 1/fs;
t = 0.1:ts:100;
tdur = seconds(t);
xt = timetable(tdur',xn);

timetable xt. のスペクトル エントロピーをプロットします。

figure
pentropy(xt)
title('Spectral Entropy of White Noise Signal Timetable')

信号のスペクトル エントロピーをプロットします。時点ベクトル t と、se および関連する時間 te を返す型を使用します。比較のために X 軸の単位とグリッドを pentropy で生成されたプロットに一致させます。

[se,te] = pentropy(xn,t');
te_min = te/60;
figure
plot(te_min,se)
title('Spectral Entropy of White Noise Signal Vector')
xlabel('Time (mins)')
ylabel('Spectral Entropy')
grid on

どちらも同じ結果になります。

pentropy の 2 番目の入力引数は、周波数と時間のいずれも表せます。ソフトウェアは引数のデータ型に従って解釈します。時間ベクトル t の代わりにサンプルの周波数スカラー fs を使用して、信号のスペクトル エントロピーをプロットします。

figure
pentropy(xn,fs);
title('Spectral Entropy of White Noise Signal Vector using Sample Frequency')

このプロットは以前のプロットと一致します。

音声信号のスペクトル エントロピーをプロットし、元の信号と比較します。まずパワー スペクトログラムを作成し、次に音声帯域幅内の周波数ビンのスペクトル エントロピーをとることによって、スペクトル エントロピーをカラーマップ上に可視化します。

低レベルのホワイト ノイズで囲まれている "Hello" という語の 2 チャネルの録音が含まれるデータ x を読み込みます。x は、2 チャネルを表す 2 つの列で構成されています。この例では最初の列のみ使用します。

サンプル周波数と時間ベクトルを定義します。ホワイト ノイズを含む x の最初のチャネルを拡張し、約 5:1 の S/N 比を達成します。

load Hello x
fs = 44100;
t = 1/fs*(0:length(x)-1);
x1 = x(:,1) + 0.01*randn(length(x),1);

スペクトル エントロピーを検出し、元の信号とスペクトル エントロピーのデータを可視化します。

[se,te] = pentropy(x1,fs);

figure
a1 = subplot(2,1,1);
plot(t,x1);
ylabel('Speech Signal')
xlabel('Time')

a2 = subplot(2,1,2);
plot(te,se)
ylabel('Spectral Entropy')
xlabel('Time')

"Hello" と話したときにスペクトル エントロピーが低下します。これは信号スペクトルが、ほぼ定項 (ホワイト ノイズ) から人声の分布に変化しているためです。人声の分布にはより多くの情報が含まれ、より低いスペクトル エントロピーをもっています。

元の信号のパワー スペクトログラム p を計算し、周波数ベクトル fp と時間ベクトル tp を返します。この場合は、周波数分解能 20 Hz を指定することで結果に許容可能な明暸性を与えます。

[p,fp,tp] = pspectrum(x1,fs,'FrequencyResolution',20,'spectrogram');

パワー スペクトログラムの周波数ベクトルは 22050 Hz になりますが、音声における対象範囲はテレフォニー帯域幅の 300 ~ 3400 Hz に限定されます。開始点と終了点を定義することによりデータを 5 つの周波数ビンに分割し、各ビンのスペクトル エントロピーを計算します。

flow = [300 628 1064 1634 2394];
fup = [627 1060 1633 2393 3400];
 
se2 = zeros(length(flow),size(p,2));
for i = 1:length(flow)
    se2(i,:) = pentropy(p,fp,tp,'FrequencyLimits',[flow(i) fup(i)]);
end

昇順の周波数ビンを示すカラーマップにデータを可視化し、元の信号と比較します。

figure
subplot(2,1,1)
plot(t,x1);
xlabel('Time (sec)')
ylabel('Speech Signal')

subplot(2,1,2)
imagesc(tp,[],flip(se2))    % Flip se2 so its plot corresponds to the ascending frequency bins.
h = colorbar(gca,'NorthOutside');
ylabel(h,'Spectral Entropy')
yticks(1:5)
set(gca, 'yticklabel',num2str((5:-1:1).')) % Label the ticks for the ascending bins.
xlabel('Time (sec)')
ylabel('Frequency Bin #')

ホワイト ノイズを、正弦波から成るセグメントと結合する信号を作成します。スペクトル エントロピーを使用して正弦波の存在と場所を検出します。

3 つのセグメントを含む信号を生成してプロットします。中央のセグメントには、ホワイト ノイズを伴う正弦波が含まれます。他の 2 つのセグメントは、純粋なホワイト ノイズです。

fs = 100;
t = 0:1/fs:10;
sin_wave = 2*sin(2*pi*20*t')+randn(length(t),1);
x = [randn(1000,1);sin_wave;randn(1000,1)];
t3 = 0:1/fs:30;
figure
plot(t3,x);
title('Sine Wave in White Noise')

スペクトル エントロピーをプロットします。

figure
pentropy(x,fs);
title('Spectral Entropy of Sine Wave in White Noise')

プロットでは、正弦波を含むセグメントはホワイト ノイズのセグメントと明確に異なります。これは、正弦波に情報が含まれるためです。純粋なホワイト ノイズには、最高のスペクトル エントロピーが含まれます。

pentropy の既定の設定では、以前のプロットの表示のように、各時点の瞬間のスペクトル エントロピーが返されるかまたはプロットされます。'Instantaneous'false に設定して、スペクトル エントロピー情報を抽出し、信号全体を表す単一の数にすることもできます。結果を他の計算において直接使用する場合は、スペクトル エントロピー値を返す型を使用します。それ以外では、pentropyans. にスペクトル エントロピーを返します。

se = pentropy(x,fs,'Instantaneous',false)
se = 0.9035

単一の数は信号のスペクトル エントロピー、つまりは情報量、の特性を表しています。この数を使用することで、この信号を他の信号と効率的に比較することができます。

入力引数

すべて折りたたむ

pentropy がスペクトル エントロピー se を返す元となる信号 timetable。単一の列で単一の変数を含む timetable で指定します。xt は、増加する、有限の行時間でなければなりません。xt timetable に時点がないまたは重複している場合、欠損または重複する時間および非等間隔の時間をもつ timetable の整理 (MATLAB)のヒントを使用してこれを修正できます。xt のサンプリングは一様でなくても構いませんが、時間間隔の中央値と時間間隔の平均値は以下に従わなければならないという pspectrum の制約があります。

1100<Median time intervalMean time interval<100.

この例については、信号のスペクトル エントロピーのプロットを参照してください。

pentropy がスペクトル エントロピー se を返す元となる、時系列の信号。ベクトルで指定します。

サンプルレートまたはサンプル時間。以下のいずれかを指定します。

  • 正の数値スカラー — Hz 単位での周波数

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

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

sampx が時間ベクトルを表す場合、時間サンプルは一様でなくても構いませんが、時間間隔の中央値と時間間隔の平均値は以下に従わなければならないという pspectrum の制約があります。

1100<Median time intervalMean time interval<100.

例については、信号のスペクトル エントロピーのプロットを参照してください。

信号のパワー スペクトログラムまたはスペクトル。行列 (スペクトログラム) または列ベクトル (スペクトル) として指定します。p を指定した場合、pentropy はその独自のスペクトログラムまたはパワー スペクトルを生成する代わりに p を使用します。周波数と時間情報を提供する fp および tp は、p を伴っている必要があります。i 番目の行および j 番目の列における p の各要素は、fp(i) に中心がある周波数ビンにおける信号のパワーおよび時間インスタンス tp(j) を表します。

例としては 音声信号のスペクトル エントロピーのプロットを参照してください。

ppentropy に明示的に与えられる場合のスペクトログラムまたはパワー スペクトログラム p の周波数。Hz 単位のベクトルとして指定します。fp の長さは s の行数と等しくなければなりません。

ppentropy に明示的に与えられる場合のパワー スペクトログラムまたはスペクトルの時間情報 p の時間情報。次のいずれかとして指定します。

  • 時点のベクトル。データ型は数値、duration、または datetime。ベクトル tp の長さは p の列数と等しくなければなりません。

  • p 内の時間間隔を表す duration スカラー。tp では、p がパワー スペクトログラム行列である場合にのみスカラー型を使用できます。

  • 特に p が列ベクトル (パワー スペクトル) の場合は、tp をスペクトルの時点を表す数値、duration、または datetime スカラーにできます。

特に p が列ベクトル (パワー スペクトル) の場合は、tp をスペクトルの時点を表す single/double/duration/datetime スカラーにできます。

名前と値のペアの引数

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

例: 'Instantaneous',false,'FrequencyLimits',[25 50] は、25 Hz から 50 Hz までの範囲の信号を表すスカラー スペクトル エントロピーを計算します。

瞬間時系列オプション。'Instantaneous' と logical で構成されるコンマ区切りのペアとして指定します。

  • Instantaneoustrue である場合、pentropy は瞬間スペクトル エントロピーを時系列ベクトルとして返します。

  • Instantaneousfalse の場合、pentropy はすべての信号またはスペクトルのスペクトル エントロピー値をスカラーで返します。

例としては スペクトル エントロピーを使用してホワイト ノイズの正弦波を検出するを参照してください。

ホワイト ノイズ オプションによるスケーリング。'Scaled' と logical で構成されるコンマ区切りのペアとして指定します。ホワイト ノイズによるスケーリング — つまり log2n (ここで n は周波数点の数) — は、スペクトル エントロピーの正規化と等価です。これを使用すると、異なる長さの信号を直接比較できます。

  • Scaledtrue である場合、pentropy は対応するホワイト ノイズのスペクトル エントロピーによってスケーリングされたスペクトル エントロピーを返します。

  • Scaledfalse である場合、pentropy はスペクトル エントロピーをスケーリングしません。

使用する周波数の範囲。'FrequencyLimits' と Hz 単位での下限と上限、f1 と f2 の 2 要素ベクトルから構成されるコンマ区切りのペアとして指定します。既定の設定は [0 sampfreq/2] です。ここで sampfreq は、pentropysampx から決定する Hz 単位でのサンプリング周波数です。

この仕様により、スペクトル範囲のいずれの端のデータ帯域も除外できます。

たとえば、音声信号のスペクトル エントロピーのプロットを参照してください。

制限時間。次のデータ型で、'TimeLimits' と、sampx で与えられるサンプル時間と同じ単位で、以下のデータ型の下限と上限、t1 および t2 の 2 要素ベクトルから構成されるコンマ区切りのペアとして指定します。

  • sampx が数値または持続時間の場合、数値または duration

  • sampxdatetime の場合、数値、duration、または datetime

この仕様により、全時間範囲からデータの時間セグメントを抽出することができます。

出力引数

すべて折りたたむ

スペクトル エントロピー。入力信号が timetable xt の場合は timetable として返され、入力信号が時系列 x の場合は double ベクトルとして返されます。

se に関連付けられた時間値。se の時間と同じ形式で返されます。

例としては 信号のスペクトル エントロピーのプロットを参照してください。

詳細

すべて折りたたむ

スペクトル エントロピー

信号のスペクトル エントロピー (SE) は、そのスペクトル パワー分布の尺度です。この概念は、情報理論におけるシャノン エントロピー、いわゆる情報エントロピーに基づいています。SE は、周波数領域内の信号の正規化されたパワー分布を確率分布として処理し、そのシャノン エントロピーを計算します。この状況においてシャノン エントロピーは、信号のスペクトル エントロピーです。このプロパティは、故障検出および診断[1][2] における特徴抽出に役立ちます。SE は、音声認識[3]および生体信号処理[4]における特徴としても幅広く使用されています。

スペクトル エントロピーの方程式は、信号のパワー スペクトルおよび確率分布の方程式から生じます。信号 x(n) について、パワー スペクトルは S(m) = |X(m)|2 (X(m) は x(n) の離散フーリエ変換) です。したがって、確率分布 P(m) は

P(m)=S(m)iS(i).

ここから、スペクトル エントロピー H は

H=m=1NP(m)log2P(m).

正規化すると

Hn=m=1NP(m)log2P(m)log2N,

ここで N は周波数点の総数です。分母係数、log2N は、周波数領域内に一様に分布した、ホワイト ノイズの最大スペクトル エントロピーを表します。

時間-周波数パワー スペクトログラム S(t,f) が既知の場合、確率分布は次のようになります。

P(m)=tS(t,m)ftS(t,f).

スペクトル エントロピーはそのままです。

H=m=1NP(m)log2P(m).

与えられた時間-周波数パワー スペクトログラム S(t,f) について瞬間スペクトル エントロピーを計算する場合、時間 t における確率分布は次になります。

P(t,m)=S(t,m)fS(t,f).

時間 t におけるスペクトル エントロピーは次になります。

H(t)=m=1NP(t,m)log2P(t,m).

参照

[1] Sharma, V., and A. Parey. "A Review of Gear Fault Diagnosis Using Various Condition Indicators." Procedia Engineering. Vol. 144, 2016, pp. 253–263.

[2] Pan, Y. N., J. Chen, and X. L. Li. "Spectral Entropy: A Complementary Index for Rolling Element Bearing Performance Degradation Assessment." Proceedings of the Institution of Mechanical Engineers, Part C: Journal of Mechanical Engineering Science. Vol. 223, Issue 5, 2009, pp. 1223–1231.

[3] Shen, J., J. Hung, and L. Lee. "Robust Entropy-Based Endpoint Detection for Speech Recognition in Noisy Environments." ICSLP. Vol. 98, November 1998.

[4] Vakkuri, A., A. Yli‐Hankala, P. Talja, S. Mustola, H. Tolvanen‐Laakso, T. Sampson, and H. Viertiö‐Oja. "Time‐Frequency Balanced Spectral Entropy as a Measure of Anesthetic Drug Effect in Central Nervous System during Sevoflurane, Propofol, and Thiopental Anesthesia." Acta Anaesthesiologica Scandinavica. Vol. 48, Number 2, 2004, pp. 145–153.

R2018a で導入