28.3 多項式の積
: y = conv (a, b)
: y = conv (a, b, shape)
2 つのベクトルaとbを畳み込みます。
aとbが 2 つの多項式の係数ベクトルである場合、畳み込みは積多項式の係数ベクトルを表します。
結果のサイズは、次の値を取る オプションのshape引数によって決定されます。
shape = "full"
完全な畳み込みを返します。(デフォルト) 結果は長さが のベクトルになります 。 length (a) + length (b) - 1
shape = "same"
畳み込みの中央部分をaと同じサイズで返します。
shape = "valid"
ゼロパディングされたエッジを含まない部分のみを返します。結果のサイズは です 。 max (size (a) - size (b) + 1, 0)
See also: deconv, conv2, convn, fftconv.
: C = convn (A, B)
: C = convn (A, B, shape)
AとBの nD 畳み込みを返します。
結果のサイズは、次の値を取る オプションのshape引数によって決定されます。
shape = "full"
完全な畳み込みを返します。(デフォルト)
shape = "same"
Aと同じサイズの畳み込みの中央部分を返します。畳み込みの中央部分はインデックスから始まります 。 floor ([size(B)/2] + 1)
shape = "valid"
ゼロパディングされたエッジを含まない部分のみを返します。結果のサイズは ですmax (size (A) - size (B) + 1, 0)。
See also: conv2, conv.
: b = deconv (y, a)
: [b, r] = deconv (y, a)
2 つのベクトルを逆畳み込み (多項式除算) します。
[b, r] = deconv (y, a)となるbと rを解きます。 y = conv (a, b) + r
yとaが多項式係数ベクトルの場合、 b には多項式商の係数が含まれ、r は最低次の剰余多項式になります。
See also: conv, residue.
: C = conv2 (A, B)
: C = conv2 (v1, v2, m)
: C = conv2 (…, shape)
AとBの 2 次元畳み込みを返します。
結果のサイズは、次の値を取る オプションのshape引数によって決定されます。
shape = "full"
完全な畳み込みを返します。(デフォルト)
shape = "same"
Aと同じサイズの畳み込みの中央部分を返します。畳み込みの中央部分はインデックスから始まります 。 floor ([size(B)/2] + 1)
shape = "valid"
ゼロパディングされたエッジを含まない部分のみを返します。結果のサイズは ですmax (size (A) - size (B) + 1, 0)。
3 番目の引数が行列の場合、列方向の ベクトルv1と行方向の ベクトルv2による行列mの畳み込みを返します 。
See also: conv, convn.
: q = polygcd (b, a)
: q = polygcd (b, a, tol)
2 つの多項式の最大公約数を見つけます。
これは、すべての共通根を掛け合わせて得られる多項式に相当します。deconv と組み合わせることで、2 つの多項式の比を減らすことができます。
許容値tol のデフォルトは ですsqrt (eps)。
注意:これは数値的に不安定なアルゴリズムなので、大きな多項式には使用しないでください。
コード例:
polygcd (poly (1:8), poly (3:12)) - poly (3:8) ⇒ [ 0, 0, 0, 0, 0, 0, 0 ] deconv (poly (1:8), polygcd (poly (1:8), poly (3:12))) - poly (1:2) ⇒ [ 0, 0, 0 ]
See also: poly, roots, conv, deconv, residue.
: [r, p, k, e] = residue (b, a)
: [b, a] = residue (r, p, k)
: [b, a] = residue (r, p, k, e)
最初の呼び出し形式では、多項式bとaの商の部分分数展開を計算します。
商は次のように定義される。
B(s) M r(m) N ---- = SUM ------------- + SUM k(i)*s^(N-i) A(s) m=1 (s-p(m))^e(m) i=1
ここで、Mは極の数(r、p、eの長さ)、kベクトルは直接寄与を表すN-1 次多項式 、eベクトルは m 番目の留数の極の多重度を指定します。
例えば、
b = [1, 1, 1]; a = [1, -5, 8, -4]; [r, p, k, e] = residue (b, a) ⇒ r = [-2; 7; 3] ⇒ p = [2; 2; 1] ⇒ k = [](0x0) ⇒ e = [1; 2; 1]
これは次の部分分数展開を表す。
s^2 + s + 1 -2 7 3 ------------------- = ----- + ------- + ----- s^3 - 5s^2 + 8s - 4 (s-2) (s-2)^2 (s-1)
2 番目の呼び出し形式では、逆演算を実行し、部分分数展開から再構成された多項式の商b (s)/ a (s) を計算します。これは、 r、p、kで指定された留数、極、直接多項式、および極の重複度eによって表されます。
多重度eが明示的に指定されていない場合、多重度は関数 によって決定されますmpoles。
例えば:
r = [-2; 7; 3]; p = [2; 2; 1]; k = [1, 0]; [b, a] = residue (r, p, k) ⇒ b = [1, -5, 9, -3, 1] ⇒ a = [1, -5, 8, -4]
ここでmpolesはe = [1; 2; 1]を決定するために使用されます。
あるいは、多重度を明示的に定義することもできます。たとえば、
r = [7; 3; -2]; p = [2; 1; 2]; k = [1, 0]; e = [2; 1; 1]; [b, a] = residue (r, p, k, e) ⇒ b = [1, -5, 9, -3, 1] ⇒ a = [1, -5, 8, -4]
これは次の部分分数展開を表す。
-2 7 3 s^4 - 5s^3 + 9s^2 - 3s + 1 ----- + ------- + ----- + s = -------------------------- (s-2) (s-2)^2 (s-1) s^3 - 5s^2 + 8s - 4
See also: mpoles, poly, roots, conv, deconv.