MATLAB ヘルプ センター
畳み込みおよび多項式乗算
w = conv(u,v)
w = conv(u,v,shape)
w = conv(u,v) は、ベクトル u と v の畳み込みを返します。u と v が多項式の係数のベクトルの場合、それらの畳み込みは 2 つの多項式の乗算と等価になります。
u,v
u
v
例
w = conv(u,v,shape) は、shape の指定に従って、畳み込みのサブセクションを返します。たとえば、conv(u,v,'same') は畳み込みの u と同じサイズの中央部分のみを返し、conv(u,v,'valid') は畳み込みのゼロが加えられたエッジを含まずに計算された部分のみを返します。
shape
conv(u,v,'same')
conv(u,v,'valid')
すべて折りたたむ
多項式 x2+1 および 2x+7 の係数を含むベクトル u および v を作成します。
u = [1 0 1]; v = [2 7];
畳み込みを使用して多項式の乗算を行います。
w = 1×4 2 7 2 7
w に多項式 2x3+7x2+2x+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 になります。
length(u)+length(v)-1
9
2 つのベクトルを作成します。u と v の畳み込みについて、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 になります。
7
入力ベクトル。行ベクトルまたは列ベクトルのいずれかとして指定します。ベクトル u と v の長さやデータ型は同じでなくてもかまいません。
u または v が single 型である場合、出力は single 型になります。それ以外の場合、conv は入力を double 型に変換して double 型を返します。
single
conv
double
データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical 複素数のサポート: あり
int8
int16
int32
int64
uint8
uint16
uint32
uint64
logical
'full'
'same'
'valid'
畳み込みのサブセクション。'full'、'same'、'valid' のいずれかとして指定します。
完全な畳み込み (既定の設定)。
畳み込みの u と同じサイズの中央部分。
畳み込みのゼロが加えられたエッジを含まずに計算された部分のみ。このオプションを使用すると、length(v) が 0 の場合を除き、length(w) は max(length(u)-length(v)+1,0) となります。length(v) = 0 の場合は、length(w) = length(u) となります。
length(v)
length(w)
max(length(u)-length(v)+1,0)
length(v) = 0
length(w) = length(u)
2 つのベクトル u と v の畳み込みとは、v を u の上に移動したときの点が重なる領域を表します。代数的には、畳み込みは係数が u と v の要素である多項式の乗算と同じ演算になります。
m = length(u) および n = length(v) とします。このとき、w は長さが m+n-1 のベクトルで、その k 番目の要素は次のとおりです。
m = length(u)
n = length(v)
m+n-1
k
w(k)=∑ju(j)v(k−j+1).
これは、u(j) および v(k-j+1) に関して適正な添字となる j のすべての値にわたる総和で、具体的には j = max(1,k+1-n):1:min(k,m) です。m = n の場合、これは以下のようになります。
u(j)
v(k-j+1)
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)
この定義を使用して、conv は FFT ベースの畳み込みではなく、2 つのベクトルの直接畳み込みを計算します。
すべて展開する
conv 関数は tall 配列をサポートしていますが、以下の使用上の注意および制限があります。
入力 u と v は列ベクトルでなければなりません。
shape が 'full' (既定) である場合は、u または v のいずれかのみを tall 配列にすることができます。
shape が 'same' または 'valid' である場合は、v を tall 配列にすることはできません。
詳細については、tall 配列を参照してください。
使用上の注意および制限:
shape 引数を使用する場合、コード生成時に定数でなければなりません。
入力引数 u と v では、次のようになります。
入力ベクトルは、コード生成時に固定サイズまたは可変長のベクトルとして指定しなければなりません。ベクトルの最初の次元または 2 番目の次元を可変サイズにすることができます。他の次元はすべて固定サイズ 1 でなければなりません。
入力ベクトル u と v は向きが同じでなければなりません。
backgroundPool
ThreadPool
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
conv 関数は、GPU 配列を完全にサポートします。GPU 上で関数を実行するには、入力データを gpuArray (Parallel Computing Toolbox) として指定します。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
gpuArray
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
R2006a より前に導入
conv2 | convn | deconv | filter | convmtx (Signal Processing Toolbox) | xcorr
conv2
convn
deconv
filter
convmtx
xcorr
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ