Main Content

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

conv

fi オブジェクトの畳み込みおよび多項式乗算

説明

c = conv(a,b) は、ベクトル a および b の畳み込みを返します。少なくともどちらか 1 つは fi オブジェクトでなければなりません。

c = conv(a,b,shape) は、shape の指定に従って、畳み込みのサブセクションを返します。

すべて折りたたむ

16 タップ FIR フィルターによる 22 サンプル列の畳み込みを求めます。

x は、語長 16 ビット、小数部の長さ 15 ビットの符号付きの値の 22 サンプル列です。h は、16 タップ FIR フィルターです。

u = (pi/4)*[1 1 1 -1 -1 -1 1 -1 -1 1 -1]; 
x = fi(kron(u,[1 1]));
h = firls(15, [0 .1 .2 .5]*2, [1 1 0 0]);

xfi オブジェクトであるため、畳み込み演算を実行する前に hfi オブジェクトにキャストする必要はありません。関数 conv が最高精度のスケーリングを使用して自動的にキャストします。

関数 conv を使用し、2 つのベクトルを畳み込みます。

y = conv(x,h);

演算により、語長 36 ビット、小数部の長さ 31 ビットの符号付き fi オブジェクト y が取得されます。入力に関連付けられている既定の fimath プロパティによって、出力の numerictype プロパティが決まります。出力にはローカル fimath がありません。

2 つの fi ベクトルを作成します。ab の畳み込みについて、a と同じサイズの中央部分を求めます。

a = fi([-1 2 3 -2 0 1 2]);
b = fi([2 4 -1 1]);
c = conv(a,b,'same')
c = 

    15     5    -9     7     6     7    -1

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 34
        FractionLength: 25

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

入力引数

すべて折りたたむ

入力ベクトル。行ベクトルまたは列ベクトルのいずれかとして指定します。

どちらかの入力が組み込みデータ型である場合、conv は、畳み込み演算を実行する前に、最高精度規則を使用してそれを fi オブジェクトにキャストします。

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

畳み込みのサブセット。次の値のいずれかとして指定します。

  • 'full' — 完全な畳み込みを返します。このオプションは既定の形状です。

  • 'same' — 畳み込みの中央部分を入力ベクトル a と同じサイズで返します。

  • 'valid' — 畳み込みのうち、0 が加えられたエッジを含まずに計算された部分のみを返します。このオプションを使用すると、出力ベクトル c の長さは、max(length(a)-max(0,length(b)-1),0) となります。

データ型: char

詳細

すべて折りたたむ

畳み込み

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)

アルゴリズム

入力に関連付けられている fimath プロパティによって、出力 fi オブジェクト cnumerictype プロパティが決まります。

  • a または b のどちらかがローカル fimath オブジェクトをもつ場合、conv は、その fimath オブジェクトを使用して中間量を計算し、これによって cnumerictype プロパティが決まります。

  • a または b のいずれにも fimath が付加されていない場合、conv は既定の fimath を使用して中間量を計算し、これによって cnumerictype プロパティが決まります。

どちらかの入力が組み込みデータ型である場合、conv は、畳み込み演算を実行する前に、最高精度規則を使用してそれを fi オブジェクトにキャストします。

出力 fi オブジェクト c は、常に既定の fimath を使用します。

拡張機能

バージョン履歴

R2009b で導入

参考