Main Content

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

lpc

線形予測フィルター係数

説明

[a,g] = lpc(x,p) では、過去のサンプルに基づいて実数値時系列 x の現在値を予測する、p 次の線形予測子 (FIR フィルター) の係数が求められます。この関数はさらに、予測誤差の分散 g を返します。x が行列の場合、この関数は各列を独立チャネルとして扱います。

すべて折りたたむ

3 次の前方予測子を使用してデータ系列を予測します。予測と元の信号を比較します。

まず、正規化されたホワイト ガウス ノイズで駆動される自己回帰 (AR) 過程の出力として、信号データを作成します。立ち上がりの過渡特性を避けるため、AR 過程出力の後半の 4,096 サンプルを使用します。

noise = randn(50000,1);
x = filter(1,[1 1/2 1/3 1/4],noise);
x = x(end-4096+1:end);

予測子係数と推定信号を計算します。

a = lpc(x,3);
est_x = filter([0 -a(2:end)],1,x);

予測した信号と元の信号を、それぞれ最後の 100 サンプルをプロットして比較します。

plot(1:100,x(end-100+1:end),1:100,est_x(end-100+1:end),'--')
grid
xlabel('Sample Number')
ylabel('Amplitude')
legend('Original signal','LPC estimate')

Figure contains an axes object. The axes object with xlabel Sample Number, ylabel Amplitude contains 2 objects of type line. These objects represent Original signal, LPC estimate.

予測誤差と予測誤差の自己相関列を計算します。自己相関をプロットします。予測誤差は、3 次の AR 入力過程に対して期待されたとおり、近似的にホワイト ガウス ノイズになっています。

e = x-est_x;
[acs,lags] = xcorr(e,'coeff');

plot(lags,acs)
grid
xlabel('Lags')
ylabel('Normalized Autocorrelation')
ylim([-0.1 1.1])

Figure contains an axes object. The axes object with xlabel Lags, ylabel Normalized Autocorrelation contains an object of type line.

入力引数

すべて折りたたむ

入力配列。ベクトルまたは行列として指定します。x が行列の場合、この関数は各列を独立チャネルとして扱います。

予測フィルターの多項式の次数。正の整数として指定します。px の長さ以下にしなければなりません。

出力引数

すべて折りたたむ

線形予測子係数。行ベクトルまたは行列として返されます。係数は、x の過去の p サンプルを現在の値に関連付けます。

x^(n)=a(2)x(n1)a(3)x(n2)a(p+1)x(np).

予測誤差の分散。スカラーまたはベクトルとして返されます。

詳細

すべて折りたたむ

予測誤差

予測誤差 e(n) を予測誤差フィルター A(z) の出力として表示できます。ここで、

  • H(z) は、オプションの線形予測子です。

  • x(n) は入力信号です。

  • x^(n) は予測信号です。

アルゴリズム

lpc では、最小二乗的に予測誤差を最小にすることで、前方線形予測子の係数が決定されます。フィルター設計や音声符号化に応用されます。

lpc では、自己回帰 (AR) モデリングの自己相関法を使用して、フィルター係数が求められます。生成されるフィルターは、たとえデータ シーケンスが正しい次数の AR 過程であっても、過程を正確にモデリングしない可能性があります。これは、自己相関法が、暗黙的にデータにウィンドウを適用しているためです。つまり、この手法では x の長さを超える信号サンプルは 0 であると仮定します。

lpc では、Xa = b の最小二乗の解が計算されます。ここで、

X=[x(1)00x(2)x(1)x(2)0x(m)x(1)0x(m)x(2)00x(m)],a=[1a(2)a(p+1)],b=[100],

であり、m は x の長さです。正規方程式として、最小二乗の問題 XHXa=XHb を解くと、ユール・ウォーカー方程式に導かれます。

[r(1)r(2)r(p)r(2)r(1)r(2)r(p)r(2)r(1)][a(2)a(3)a(p+1)]=[r(2)r(3)r(p+1)],

ここでは、r = [r(1) r(2) ... r(p+1)] は、xcorr を使用して計算された x に対する自己相関の推定です。ユール・ウォーカー方程式は、レビンソン・ダービン アルゴリズム (levinson を参照) を使用して、O(p2) フロップで解かれます。

参照

[1] Jackson, L. B. Digital Filters and Signal Processing. 2nd Edition. Boston: Kluwer Academic Publishers, 1989, pp. 255–257.

バージョン履歴

R2006a より前に導入