ドキュメンテーション

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

conv

畳み込みおよび多項式乗算

構文

w = conv(u,v)
w = conv(u,v,shape)

説明

w = conv(u,v) は、ベクトル uv畳み込みを返します。uv が多項式の係数のベクトルの場合、それらの畳み込みは 2 つの多項式の乗算と等価になります。

w = conv(u,v,shape) は、shape の指定に従って、畳み込みのサブセクションを返します。たとえば、conv(u,v,'same') は畳み込みの u と同じサイズの中央部分のみを返し、conv(u,v,'valid') は畳み込みのゼロが加えられたエッジを含まずに計算された部分のみを返します。

すべて折りたたむ

多項式 および の係数を含むベクトル u および v を作成します。

u = [1 0 1];
v = [2 7];

畳み込みを使用して多項式の乗算を行います。

w = conv(u,v)
w = 1×4

     2     7     2     7

w に多項式 の係数が格納されています。

2 つのベクトルを作成し、それらの畳み込みを行います。

u = [1 1 1];
v = [1 1 0 0 0 1 1];
w = conv(u,v)
w = 1×9

     1     2     2     1     0     1     2     2     1

w の長さは length(u)+length(v)-1、この例では 9 になります。

2 つのベクトルを作成します。uv の畳み込みの u と同じサイズの中央部分を求めます。

u = [-1 2 3 -2 0 1 2];
v = [2 4 -1 1];
w = conv(u,v,'same')
w = 1×7

    15     5    -9     7     6     7    -1

w の長さは 7 です。完全な畳み込みの場合、長さは length(u)+length(v)-1 となり、この例では 10 になります。

入力引数

すべて折りたたむ

入力ベクトル。行ベクトルまたは列ベクトルのいずれかとして指定します。ベクトル uv の長さやデータ型は同じでなくてもかまいません。

u または vsingle 型である場合、出力は single 型になります。それ以外の場合、conv は入力を double 型に変換して double 型を返します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
複素数のサポート: あり

畳み込みのサブセクション。'full''same''valid' のいずれかとして指定します。

'full'

完全な畳み込み (既定の設定)。

'same'

畳み込みの u と同じサイズの中央部分。

'valid'

畳み込みのゼロが加えられたエッジを含まずに計算された部分のみ。このオプションを使用すると、length(v) が 0 の場合を除き、length(w)max(length(u)-length(v)+1,0) となります。length(v) = 0 の場合は、length(w) = length(u) となります。

詳細

すべて折りたたむ

畳み込み

2 つのベクトル uv の畳み込みとは、vu の上に移動したときの点が重なる領域を表します。代数的には、畳み込みは係数が uv の要素である多項式の乗算と同じ演算になります。

m = length(u) および n = length(v) とします。このとき、w は長さが m+n-1 のベクトルで、その k 番目の要素は次のとおりです。

w(k)=ju(j)v(kj+1).

これは、u(j) および v(k-j+1) に関して適正な添字となる j のすべての値にわたる総和で、具体的には j = max(1,k+1-n):1:min(k,m) です。m = n の場合、これは以下のようになります。

w(1) = u(1)*v(1)
w(2) = u(1)*v(2)+u(2)*v(1)
w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1)
...
w(n) = u(1)*v(n)+u(2)*v(n-1)+ ... +u(n)*v(1)
...
w(2*n-1) = u(n)*v(n)

拡張機能

R2006a より前に導入