conv
畳み込みおよび多項式乗算
説明
例
多項式 および の係数を含むベクトル 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 つのベクトルを作成します。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 になります。
入力引数
入力ベクトル。行ベクトルまたは列ベクトルのいずれかとして指定します。ベクトル u と v の長さやデータ型は同じでなくてもかまいません。
u または v が single 型である場合、出力は single 型になります。それ以外の場合、conv は入力を double 型に変換して double 型を返します。
データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
複素数のサポート: あり
畳み込みのサブセクション。"full"、"same"、または "valid" として指定します。
"full" | 完全な畳み込み (既定の設定)。 |
"same" | 畳み込みの |
"valid" | 畳み込みのゼロが加えられたエッジを含まずに計算された部分のみ。このオプションを使用すると、 |
出力引数
畳み込み後のベクトル。行ベクトルまたは列ベクトルとして返されます。
詳細
2 つのベクトル u と v の畳み込みとは、v を u の上に移動したときの点が重なる領域を表します。代数的には、畳み込みは係数が u と v の要素である多項式の乗算と同じ演算になります。
m = length(u) および n = length(v) とします。このとき、w は長さが m+n-1 のベクトルで、その k 番目の要素は次のとおりです。
これは、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)
この定義を使用して、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は向きが同じでなければなりません。
使用上の注意および制限については、「C/C++ コード生成」セクションを参照してください。GPU コード生成にも同様の、使用上の注意および制限が適用されます。
conv 関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
conv 関数は、GPU 配列を完全にサポートします。GPU 上で関数を実行するには、入力データを gpuArray (Parallel Computing Toolbox) として指定します。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
conv 関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入w = conv(u,v) または w = conv(u,v,"full") を使用して完全な畳み込みを計算する場合、出力 w は行ベクトルになります。ただし、入力ベクトル u と v の両方が列ベクトルである場合を除きます。
たとえば、行ベクトルと列ベクトルの畳み込みの場合、出力は行ベクトルです。
u = [1 0 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2 7 6 7 4u = [1; 0; 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2
7
6
7
4比較として、以前のリリースで完全な畳み込みを計算すると、conv 関数は u と v の方向と長さに応じて行ベクトルまたは列ベクトルのいずれかを返していました。
たとえば、以前のリリースでは、conv は 1 行 3 列の行ベクトルと 3 行 1 列の列ベクトルの完全な畳み込みを 5 行 1 列の列ベクトルとして返していました。
u = [1 0 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2
7
6
7
4conv は 1 行 4 列の行ベクトルとして返していました。u = [1 0 1]; v = [2; 7]; w = conv(u,v)
w =
2 7 2 7w = conv(u,v,"same") または w = conv(u,v,"valid") の出力に変更はなく、これらの出力は引き続き最初の入力ベクトル u の方向に従います。
MATLAB Command
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 のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)