Main Content

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 の行時間と等しくなります。この構文は Instantaneousfalse に設定されている場合には適用されません。

出力引数なしで pentropy(___) を使用すると、時間に対するスペクトル エントロピーがプロットされます。Instantaneousfalse に設定されている場合、関数はスペクトル エントロピーのスカラー値を出力します。

すべて折りたたむ

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

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

xn = randn(1000,1);

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

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

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

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

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

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

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

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

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

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

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

低レベルのホワイト ノイズで組み込まれている "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);

subplot(2,1,1)
plot(t,x1)
ylabel("Speech Signal")
xlabel("Time")

subplot(2,1,2)
plot(te,se)
ylabel("Spectral Entropy")
xlabel("Time")

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

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

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

パワー スペクトログラムの周波数ベクトルは 22,050 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
tiledlayout flow
nexttile
plot(t,x1)
xlabel("Time (seconds)")
ylabel("Speech Signal")

nexttile
% Flip se2 so its plot corresponds 
% to the ascending frequency bins.
imagesc(tp,[],flip(se2))

h = colorbar(gca,"NorthOutside");
ylabel(h,"Spectral Entropy")
yticks(1:5)
set(gca,YTickLabel=num2str((5:-1:1).'))
xlabel("Time (seconds)")
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;

plot(t3,x)
title("Sine Wave in White Noise")

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

pentropy(x,fs)
title("Spectral Entropy of Sine Wave in White Noise")

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

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

se = pentropy(x,fs,Instantaneous=false)
se = 0.9033

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

入力引数

すべて折りたたむ

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

1100<Median time intervalMean time interval<100.

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

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

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

  • 正の数値スカラー — ヘルツ単位のサンプル レート

  • 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 スカラーにできます。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

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

瞬間時系列オプション。logical として指定します。

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

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

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

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

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

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

使用する周波数の範囲。Hz 単位での下限と上限、f1 と f2 を含む 2 要素ベクトルとして指定します。既定の設定は [0 sampfreq/2] です。ここで sampfreq は、pentropysampx から決定する Hz 単位でのサンプル レートです。

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

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

制限時間。sampx で与えられるサンプル時間と同じ単位で、以下のデータ型の下限と上限、t1 および t2 を含む 2 要素ベクトルとして指定します。

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

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

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

出力引数

すべて折りたたむ

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

se に関連付けられた時間値。se の時間と同じ形式で返されます。この引数は Instantaneousfalse に設定されている場合には適用されません。

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

詳細

すべて折りたたむ

スペクトル エントロピー

信号の "スペクトル エントロピー" (SE) は、そのスペクトル パワー分布の尺度です。この概念は、情報理論におけるシャノン エントロピー、いわゆる情報エントロピーに基づいています。SE は、周波数領域内の信号の正規化されたパワー分布を確率分布として処理し、そのシャノン エントロピーを計算します。この状況においてシャノン エントロピーは、信号のスペクトル エントロピーです。このプロパティは、故障検出および診断[2][1]における特徴抽出に役立ちます。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] 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.

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

[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 で導入

すべて展開する